1   -   I n t r o d u c c i  n 
 
 L u a   e s   u n   l e n g u a j e   d e   p r o g r a m a c i  n   d e   e x t e n s i  n   d i s e  a d o   p a r a   a p o y a r   l a   p r o g r a m a c i  n   g e n e r a l   d e   p r o c e d i m i e n t o   c o n   l a   d e s c r i p c i  n   d e   l o s   d a t o s 
 
 i n s t a l a c i o n e s .   T a m b i  n   o f r e c e   u n   b u e n   s o p o r t e   p a r a   p r o g r a m a c i  n   o r i e n t a d a   a   o b j e t o s ,   p r o g r a m a c i  n   f u n c i o n a l ,   y   p o r   d a t o s 
 
 p r o g r a m a c i  n .   L u a   e s t    d e s t i n a d o   a   s e r   u t i l i z a d o   c o m o   u n   p o d e r o s o   y   l i g e r o   l e n g u a j e   d e   s c r i p t i n g   p a r a   c u a l q u i e r   p r o g r a m a   q u e   l o   n e c e s i t e .   L u a 
 
 s e   i m p l e m e n t a   c o m o   u n a   b i b l i o t e c a ,   e s c r i t o   e n   C   l i m p i o   ( e s   d e c i r ,   e n   e l   s u b c o n j u n t o   c o m  n   d e   A N S I   C   y   C   +   + ) . 
 
 
 
 A l   s e r   u n   l e n g u a j e   d e   e x t e n s i  n ,   L u a   n o   t i e n e   n i n g u n a   n o c i  n   d e   u n   " p r i n c i p a l "   d e l   p r o g r a m a :   s  l o   f u n c i o n a   i n t e g r a d o   e n   u n   c l i e n t e   d e   a c o g i d a ,   q u e   s e   l l a m a 
 
 i n t e g r a r   e l   p r o g r a m a   o ,   s i m p l e m e n t e ,   e l   a n f i t r i  n .   E s t e   p r o g r a m a   p u e d e   i n v o c a r   f u n c i o n e s   p a r a   e j e c u t a r   u n   p e d a z o   d e   c  d i g o   L u a ,   e s c r i b i r   p u e d e   y 
 
 l e e r   v a r i a b l e s   d e   L u a ,   y   p u e d e   r e g i s t r a r   f u n c i o n e s   C   p a r a   s e r   l l a m a d a s   p o r   c  d i g o   L u a .   M e d i a n t e   e l   u s o   d e   f u n c i o n e s   C ,   L u a   p u e d e   s e r 
 
 a u m e n t a d o   p a r a   h a c e r   f r e n t e   a   u n a   a m p l i a   g a m a   d e   d i f e r e n t e s   d o m i n i o s ,   p o r   l o   t a n t o   l a   c r e a c i  n   d e   l e n g u a j e s   d e   p r o g r a m a c i  n   p e r s o n a l i z a d o s   q u e   c o m p a r t e n   u n a 
 
 m a r c o   s i n t  c t i c o .   L a   d i s t r i b u c i  n   d e   L u a   i n c l u y e   u n   p r o g r a m a   d e   a c o g i d a   d e   l a   m u e s t r a   l l a m a d a   l u a ,   q u e   u t i l i z a   l a   b i b l i o t e c a   d e   L u a   p a r a   o f r e c e r 
 
 u n a   i n v e s t i g a c i  n   c o m p l e t a ,   i n d e p e n d i e n t e   i n t  r p r e t e   d e   L u a . 
 
 
 
 L u a   e s   s o f t w a r e   l i b r e ,   y   s e   p r o p o r c i o n a   c o m o   d e   c o s t u m b r e ,   s i n   g a r a n t  a s ,   s e g  n   l o   i n d i c a d o   e n   s u   l i c e n c i a .   L a   a p l i c a c i  n   s e   d e s c r i b e 
 
 e n   e s t e   m a n u a l   e s t    d i s p o n i b l e   e n   e l   s i t i o   w e b   o f i c i a l   d e   L u a ,   w w w . l u a . o r g . 
 
 
 
 A l   i g u a l   q u e   c u a l q u i e r   o t r o   m a n u a l   d e   r e f e r e n c i a ,   e s t e   d o c u m e n t o   e s t    s e c o   e n   a l g u n a s   p a r t e s .   P a r a   u n a   d i s c u s i  n   d e   l a s   d e c i s i o n e s   d e t r  s   d e l   d i s e  o   d e 
 
 L u a ,   c o n s u l t e   l o s   d o c u m e n t o s   t  c n i c o s   d i s p o n i b l e s   e n   e l   s i t i o   w e b   d e   L u a .   P a r a   u n a   i n t r o d u c c i  n   d e t a l l a d a   a   l a   p r o g r a m a c i  n   e n   L u a ,   v  a s e   R o b e r t o 
 
 l i b r o   d e   p r o g r a m a c i  n   e n   L u a   ( s e g u n d a   e d i c i  n ) . 
 
 
 
 2   -   E l   L e n g u a j e 
 
 E s t a   s e c c i  n   d e s c r i b e   e l   l  x i c o ,   l a   s i n t a x i s   y   l a   s e m  n t i c a   d e   L u a .   E n   o t r a s   p a l a b r a s ,   e s t a   s e c c i  n   s e   d e s c r i b e n   l o s   s  m b o l o s 
 
 s o n   v  l i d o s ,    c  m o   s e   p u e d e n   c o m b i n a r ,   y   l o   q u e   s i g n i f i c a   q u e   s u s   c o m b i n a c i o n e s . 
 
 
 
 L a s   c o n s t r u c c i o n e s   d e l   l e n g u a j e   s e   e x p l i c a   u s a n d o   l a   n o t a c i  n   B N F   e x t e n d i d a   u s u a l ,   e n   l a   q u e   { a }   s i g n i f i c a   0   o   m  s ,   y   [ a ] 
 
 s i g n i f i c a   u n   u n o   o p c i o n a l .   L o s   n o   t e r m i n a l e s   s e   m u e s t r a n   c o m o   n o - t e r m i n a l ,   l a s   p a l a b r a s   c l a v e   s e   m u e s t r a n   c o m o   K W o r d ,   y   o t r o s   s  m b o l o s   t e r m i n a l e s 
 
 s e   m u e s t r a n   c o m o   ' = ' .   L a   s i n t a x i s   c o m p l e t a   d e   L u a   s e   p u e d e   e n c o n t r a r   e n   e l      8   a l   f i n a l   d e   e s t e   m a n u a l . 
 
 
 
 2 . 1   -   C o n v e n i o s   d e   l  x i c o s 
 
 N o m b r e s   ( t a m b i  n   l l a m a d o s   i d e n t i f i c a d o r e s )   e n   L u a   p u e d e   s e r   c u a l q u i e r   c a d e n a   d e   l e t r a s ,   d  g i t o s   y   c a r a c t e r e s   d e   s u b r a y a d o ,   q u e   n o   e m p i e c e   c o n   u n   d  g i t o . 
 
 E s t o   c o i n c i d e   c o n   l a   d e f i n i c i  n   d e   l o s   n o m b r e s   e n   l a   m a y o r  a   d e   l o s   i d i o m a s .   ( L a   d e f i n i c i  n   d e   l a   c a r t a   d e p e n d e   d e   l a   l o c a l i z a c i  n   a c t u a l :   n i n g u n a 
 
 c a r  c t e r   a l f a b  t i c o   c o n s i d e r a d o   p o r   l a   l o c a l i z a c i  n   a c t u a l   p u e d e   s e r   u t i l i z a d o   e n   u n   i d e n t i f i c a d o r . )   i d e n t i f i c a d o r e s   s e   u t i l i z a n   p a r a   n o m b r a r   l a s   v a r i a b l e s 
 
 y   c a m p o s   d e   l a   t a b l a . 
 
 
 
 L a s   s i g u i e n t e s   p a l a b r a s   e s t  n   r e s e r v a d o s   y   n o   s e   p u e d e   u t i l i z a r   c o m o   n o m b r e s : 
 
 
 
           y   l a   r u p t u r a   l o   m  s   e l s e i f 
 
           f a l s a   p a r a   p o n e r   f i n   a   l a   f u n c i  n   s i 
 
           e n   e l   l o c a l   o   n u l a ,   n o 
 
           r e p e t i r   l u e g o   r e g r e s a r   h a s t a   c i e r t o   t i e m p o 
 
 
 
 L u a   e s   u n   l e n g u a j e   d e   m a y  s c u l a s   y   m i n  s c u l a s :   y   e s   u n a   p a l a b r a   r e s e r v a d a ,   p e r o   A n d   y   A N D   s o n   d o s   n o m b r e s   d i f e r e n t e s ,   v  l i d a s .   P o r   c o n v e n c i  n , 
 
 n o m b r e s   q u e   c o m i e n z a n   c o n   u n   g u i  n   s e g u i d o   d e   l a s   l e t r a s   e n   m a y  s c u l a s   ( p o r   e j e m p l o ,   _ V E R S I O N )   e s t  n   r e s e r v a d o s   p a r a   i n t e r n a   g l o b a l 
 
 l a s   v a r i a b l e s   u t i l i z a d a s   p o r   L u a . 
 
 
 
 L a s   s i g u i e n t e s   c a d e n a s   e n   o t r o s   t e s t i m o n i o s   i n d i c a n : 
 
 
 
           +   -   *   / %   ^   # 
 
           = =   ~   =   < = >   =   < >   = 
 
           ( )   { }   [ ] 
 
           ; : , .   . .   . . . 
 
 
 
 L a s   c a d e n a s   l i t e r a l e s   s e   p u e d e n   d e l i m i t a r   c o n   j u e g o   c o m i l l a s   s i m p l e s   o   d o b l e s ,   y   p u e d e   c o n t e n e r   e l   s i g u i e n t e   t i p o   C   d e   e s c a p e 
 
 s e c u e n c i a s :   ' \   a '   ( c a m p a n a ) ,   ' \   b '   ( r e t r o c e s o ) ,   ' \   f '   ( a v a n c e   d e   p  g i n a ) ,   ' \   n '   ( n u e v a   l  n e a ) ,   ' \   r '   ( r e t o r n o   d e   c a r r o ) ,   ' \   t '   ( h o r i z o n t a l   f i c h a ) , 
 
 ' \   V '   ( t a b u l a d o r   v e r t i c a l ) ,   ' \   \ '   ( b a r r a   i n v e r t i d a ) ,   " \ "   " ( c o m i l l a s   [ c o m i l l a s ] ) ,   y   ' \ ' '   ( a p  s t r o f o   [ c o m i l l a   s i m p l e ] ) . 
 
 P o r   o t r a   p a r t e ,   u n a   b a r r a   i n v e r t i d a   s e g u i d a   p o r   u n   s a l t o   d e   l  n e a   e n   l o s   r e s u l t a d o s   r e a l e s   d e   u n a   n u e v a   l  n e a   e n   l a   c a d e n a .   U n   c a r  c t e r   d e   u n a   c a d e n a   p u e d e   s e r   t a m b i  n 
 
 e s p e c i f i c a d o   p o r   s u   v a l o r   n u m  r i c o   u t i l i z a n d o   l a   s e c u e n c i a   d e   e s c a p e   \   d d d ,   d o n d e   d d d   e s   u n a   s e c u e n c i a   d e   h a s t a   t r e s   d e c i m a l e s 
 
 d  g i t o s .   ( T e n g a   e n   c u e n t a   q u e   s i   u n   e s c a p e   n u m  r i c a   d e b e   s e r   s e g u i d a   d e   u n   d  g i t o ,   d e b e   s e r   e x p r e s a d a   u t i l i z a n d o   e x a c t a m e n t e   t r e s   d  g i t o s . ) 
 
 L a s   c a d e n a s   d e   L u a   p u e d e   c o n t e n e r   c u a l q u i e r   v a l o r   d e   8   b i t s ,   i n c l u y e n d o   l o s   c e r o s   i n t e g r a d o s ,   q u e   p u e d e n   s e r   e s p e c i f i c a d o s   c o m o   ' \   0 ' . 
 
 
 
 L a s   c a d e n a s   l i t e r a l e s   t a m b i  n   s e   p u e d e n   d e f i n i r   u t i l i z a n d o   u n   f o r m a t o   l a r g o   d e l i m i t a d a   p o r   c o r c h e t e s   l a r g o s .   D e f i n i m o s   u n   c o r c h e t e   d e   a p e r t u r a   d e   l a   l a r g a 
 
 n   d e   n i v e l   c o m o   u n   c o r c h e t e   d e   a p e r t u r a   s e g u i d o   d e   n   s i g n o s   i g u a l e s   s e g u i d o s   d e   o t r o   c o r c h e t e   d e   a p e r t u r a .   A s  ,   u n a   a b e r t u r a 
 
 s o p o r t e   l a r g o   d e   n i v e l   0   s e   e s c r i b e   c o m o   [ [ ,   u n   s o p o r t e   d e   a p e r t u r a   l a r g o   d e   n i v e l   1   s e   e s c r i b e   c o m o   [ =   [ ,   y   a s    s u c e s i v a m e n t e .   U n   c i e r r e   a   l a r g o 
 
 s o p o r t e   s e   d e f i n e   d e   m a n e r a   s i m i l a r ,   p o r   e j e m p l o ,   u n   s o p o r t e   d e   c i e r r e   l a r g o   d e   n i v e l   4   s e   e s c r i b e   c o m o ]   = = = = ] .   U n a   l a r g a   c a d e n a   c o m i e n z a 
 
 c o n   u n   l a r g o   p a r  n t e s i s   d e   a p e r t u r a   d e   c u a l q u i e r   n i v e l   y   t e r m i n a   e n   e l   s o p o r t e   d e   q u e   f i n a l i c e   e l   p r i m e r   t i e m p o   d e l   m i s m o   n i v e l .   L i t e r a l e s   e n   e s t e 
 
 f o r m a   e n t r e   c o r c h e t e s   p u e d e   e x t e n d e r s e   p o r   v a r i a s   l  n e a s ,   n o   i n t e r p r e t a r   l a s   s e c u e n c i a s   d e   e s c a p e ,   y   h a c e r   c a s o   o m i s o   s o p o r t e s   l a r g o s   d e   c u a l q u i e r   o t r o 
 
 n i v e l .   P u e d e n   c o n t e n e r   c u a l q u i e r   c o s a   e x c e p t o   u n   c o r c h e t e   d e   c i e r r e   d e l   n i v e l   a d e c u a d o . 
 
 
 
 P a r a   m a y o r   c o m o d i d a d ,   c u a n d o   e l   c o r c h e t e   d e   a p e r t u r a   l a r g a   e s   s e g u i d a   i n m e d i a t a m e n t e   p o r   u n a   n u e v a   l  n e a ,   l a   n u e v a   l  n e a   n o   e s t    i n c l u i d o   e n   e l 
 
 c a d e n a .   C o m o   u n   e j e m p l o ,   e n   u n   s i s t e m a   q u e   u t i l i z a   A S C I I   ( e n   l a   q u e   " a "   s e   c o d i f i c a   c o m o   9 7 ,   d e   n u e v a   l  n e a   s e   c o d i f i c a   c o m o   1 0 ,   y   ' 1   ' s e   c o d i f i c a   c o m o   4 9 ) , 
 
 l a s   c i n c o   c a d e n a s   l i t e r a l e s   s i g u i e n t e s   d e n o t a n   l a   m i s m a   c a d e n a : 
 
 
 
           a   =   ' a l o   \   n 1 2 3   " ' 
 
           a   =   " a l o   \   n 1 2 3   \ "   " 
 
           a   =   ' \   9 7 l o   \   1 0   \   0 4 9 2 3   " " 
 
           a   =   [ [ a l o 
 
           1 2 3   " ] ] 
 
           a   =   [ = =   [ 
 
           a l o 
 
           1 2 3   " ]   = = ] 
 
 
 
 U n a   c o n s t a n t e   n u m  r i c a   s e   p u e d e   e s c r i b i r   c o n   u n a   p a r t e   d e c i m a l   o p c i o n a l   y   u n   e x p o n e n t e   d e c i m a l   o p c i o n a l .   L u a   t a m b i  n   a c e p t a 
 
 e n t e r o s   c o n s t a n t e s   h e x a d e c i m a l e s ,   m e d i a n t e   u n   p r e f i j o   0 x .   A l g u n o s   e j e m p l o s   d e   c o n s t a n t e s   n u m  r i c a s   v  l i d a s   s o n 
 
 
 
           3   3 . 0   3 . 1 4 1 6   3 1 4 . 1 6 e - 2   0 . 3 1 4 1 6 E 1   0 x f f   0 x 5 6 
 
 
 
 U n   c o m e n t a r i o   c o m i e n z a   c o n   u n   d o b l e   g u i  n   ( - )   e n   c u a l q u i e r   l u g a r   f u e r a   d e   u n a   c a d e n a .   S i   e l   t e x t o   i n m e d i a t a m e n t e   d e s p u  s   -   n o   e s   u n a   a p e r t u r a 
 
 s o p o r t e   d e   l a r g o ,   e l   c o m e n t a r i o   e s   u n   b r e v e   c o m e n t a r i o ,   q u e   s e   e x t i e n d e   h a s t a   e l   f i n a l   d e   l a   l  n e a .   D e   l o   c o n t r a r i o ,   e s   u n   c o m e n t a r i o   l a r g o ,   q u e 
 
 e s   d e c i r ,   h a s t a   e l   c o r c h e t e   d e   c i e r r e   a   l a r g o   c o r r e s p o n d i e n t e .   C o m e n t a r i o s   l a r g o s   s e   u t i l i z a n   c o n   f r e c u e n c i a   p a r a   d e s a c t i v a r   e l   c  d i g o   d e   f o r m a   t e m p o r a l . 
 
 
 
 2 . 2   -   V a l o r e s   y   t i p o s 
 
 L u a   e s   u n   l e n g u a j e   d e   t i p o s   d i n  m i c o s .   E s t o   s i g n i f i c a   q u e   l a s   v a r i a b l e s   n o   t i e n e n   t i p o ,   l o s   v a l o r e s   s  l o   l o   h a c e n .   N o   h a y   t i p o 
 
 d e f i n i c i o n e s   e n   l a   l e n g u a .   T o d o s   l o s   v a l o r e s   d e   l l e v a r   a   s u   p r o p i o   t i p o . 
 
 
 
 T o d o s   l o s   v a l o r e s   e n   L u a   s o n   v a l o r e s   d e   p r i m e r a   c l a s e .   E s t o   s i g n i f i c a   q u e   t o d o s   l o s   v a l o r e s   s e   p u e d e n   a l m a c e n a r   e n   l a s   v a r i a b l e s ,   p a s a   c o m o   a r g u m e n t o s   a   o t r o 
 
 f u n c i o n e s ,   y   s e   d e v u e l v e   c o m o   r e s u l t a d o s . 
 
 
 
 H a y   o c h o   t i p o s   b  s i c o s   e n   L u a :   n i l ,   b o o l e a n ,   n  m e r o ,   u n a   c a d e n a   d e   f u n c i  n ,   u s e r d a t a ,   h i l o   y   m e s a .   N i l   e s   e l   t i p o   d e 
 
 e l   v a l o r   n i l ,   c u y a   p r i n c i p a l   c a r a c t e r  s t i c a   e s   s e r   d i f e r e n t e   d e   c u a l q u i e r   o t r o   v a l o r ,   p o r   l o   g e n e r a l   r e p r e s e n t a   l a   a u s e n c i a   d e   u n a   h e r r a m i e n t a    t i l 
 
 v a l o r .   B o o l e a n   e s   e l   t i p o   d e   l o s   v a l o r e s   f a l s o s   y   v e r d a d e r o s .   T a n t o   n u l a   y   f a l s a   q u e   u n a   c o n d i c i  n   f a l s a ,   c u a l q u i e r   o t r o   v a l o r   q u e   h a c e 
 
 E s   c i e r t o .   E l   n  m e r o   r e p r e s e n t a   r e a l   ( d e   d o b l e   p r e c i s i  n   d e   p u n t o   f l o t a n t e )   n  m e r o s .   ( E s   f  c i l   d e   c o n s t r u i r   i n t  r p r e t e s   d e   L u a   q u e   u s e n 
 
 o t r a s   r e p r e s e n t a c i o n e s   i n t e r n a s   d e   l o s   n  m e r o s ,   t a l e s   c o m o   f l o t a d o r   d e   p r e c i s i  n   s i m p l e   o   e n t e r o s   l a r g o s ,   v e r   l u a c o n f . h   a r c h i v o )   S t r i n g . 
 
 r e p r e s e n t a   l a s   m a t r i c e s   d e   c a r a c t e r e s .   L u a   e s   d e   8 - b i t s   p u r o :   l a s   c a d e n a s   p u e d e n   c o n t e n e r   c u a l q u i e r   c a r  c t e r   d e   8   b i t s ,   i n c l u y e n d o   l o s   c e r o s   i n c r u s t a d o s   ( " \   0 " ) 
 
 ( V  a s e      2 . 1 ) . 
 
 
 
 L u a   p u e d e   l l a m a r   ( y   m a n e j a r )   f u n c i o n e s   e s c r i t a s   e n   L u a   y   f u n c i o n e s   e s c r i t a s   e n   C   ( v  a s e      2 . 5 . 8 ) . 
 
 
 
 E l   t i p o   u s e r d a t a   s e   p r o p o r c i o n a   p a r a   p e r m i t i r   q u e   d a t o s   a r b i t r a r i o s   C   q u e   s e   a l m a c e n a n   e n   l a s   v a r i a b l e s   d e   L u a .   E s t e   t i p o   c o r r e s p o n d e   a   u n   b l o q u e   d e 
 
 l a   m e m o r i a   e n   b r u t o   y   n o   t i e n e   o p e r a c i o n e s   p r e d e f i n i d a s   e n   L u a ,   e x c e p t o   l a   a s i g n a c i  n   y   p r u e b a   d e   i d e n t i d a d .   S i n   e m b a r g o ,   u t i l i z a n d o   M e t a T a b l e s ,   e l 
 
 p r o g r a m a d o r   p u e d e   d e f i n i r   o p e r a c i o n e s   d e   v a l o r e s   u s e r d a t a   ( v  a s e      2 . 8 ) .   L o s   v a l o r e s   u s e r d a t a   n o   p u e d e n   s e r   c r e a d o s   o   m o d i f i c a d o s   e n   L u a ,   s  l o 
 
 a   t r a v  s   d e   l a   A P I   C .   E s t o   g a r a n t i z a   l a   i n t e g r i d a d   d e   l o s   d a t o s   d e   p r o p i e d a d   d e l   p r o g r a m a   d e   a c o g i d a . 
 
 
 
 E l   t i p o   t h r e a d   r e p r e s e n t a   i n d e p e n d i e n t e s   d e   e j e c u c i  n   y   q u e   s e   u t i l i z a   p a r a   i m p l e m e n t a r   c o - r u t i n a s   ( v  a s e      2 . 1 1 ) .   N o 
 
 c o n f u n d i r   a   l a s   d i s c u s i o n e s   d e   L u a   c o n   h i l o s   d e l   s i s t e m a   o p e r a t i v o .   L u a   s o p o r t a   c o - r u t i n a s   e n   t o d o s   l o s   s i s t e m a s ,   i n c l u s o   a q u e l l o s   q u e   n o   a p o y a n 
 
 l a s   d i s c u s i o n e s . 
 
 
 
 L a   t a b l a   d e   t i p o s   i m p l e m e n t a   a r r a y s   a s o c i a t i v o s ,   e s   d e c i r ,   m a t r i c e s   q u e   p u e d e n   s e r   i n d e x a d o s ,   n o   s  l o   c o n   l o s   n  m e r o s ,   p e r o   c o n   u n   v a l o r 
 
 ( E x c e p t o   e l   c e r o ) .   L a s   t a b l a s   p u e d e n   s e r   h e t e r o g  n e o s ,   e s   d e c i r ,   p u e d e n   c o n t e n e r   v a l o r e s   d e   t o d o s   l o s   t i p o s   ( e x c e p t o   n i l ) .   L a s   t a b l a s   s o n   e l    n i c o 
 
 l o s   d a t o s   d e   l a   e s t r u c t u r a c i  n   d e   m e c a n i s m o s   e n   L u a ,   y a   q u e   p u e d e n   s e r   u s a d o s     p a r a   r e p r e s e n t a r   m a t r i c e s   c o m u n e s ,   t a b l a s   d e   s  m b o l o s ,   j u e g o s ,   a r c h i v o s ,   g r  f i c o s , 
 
  r b o l e s ,   e t c   P a r a   r e p r e s e n t a r   r e g i s t r o s   L u a   u s a   e l   n o m b r e   d e l   c a m p o   c o m o    n d i c e .   E l   l e n g u a j e   s o p o r t a   e s t a   r e p r e s e n t a c i  n 
 
 p r o p o r c i o n a r   a . n a m e   c o m o   e l   a z  c a r   s i n t  c t i c o   p a r a   u n a   [ " n o m b r e " ] .   H a y   v a r i a s   f o r m a s   c o n v e n i e n t e s   d e   c r e a r   t a b l a s   e n   L u a   ( v  a s e      2 . 5 . 7 ) . 
 
 
 
 C o m o   l o s    n d i c e s ,   e l   v a l o r   d e   u n   c a m p o   d e   t a b l a   p u e d e   s e r   d e   c u a l q u i e r   t i p o   ( e x c e p t o   n i l ) .   E n   p a r t i c u l a r ,   y a   q u e   l a s   f u n c i o n e s   s o n   d e   p r i m e r a   c l a s e 
 
 v a l o r e s ,   c a m p o s   d e   u n a   t a b l a   p u e d e   c o n t e n e r   f u n c i o n e s .   A s  ,   l a s   t a b l a s   t a m b i  n   p u e d e   l l e v a r   a   l o s   m  t o d o s   ( v  a s e      2 . 5 . 9 ) . 
 
 
 
 L a s   t a b l a s ,   l a s   f u n c i o n e s ,   l o s   h i l o s ,   y   ( c o m p l e t a )   l o s   v a l o r e s   s o n   o b j e t o s   u s e r d a t a :   L a s   v a r i a b l e s   n o   c o n t i e n e n   r e a l m e n t e   e s t o s   v a l o r e s ,   s  l o 
 
 r e f e r e n c i a s   a   l o s   m i s m o s .   A s i g n a c i  n   d e   b e n e f i c i o s ,   d e   l o s   p a r  m e t r o s   q u e   p a s a ,   y   l a   f u n c i  n   s i e m p r e   m a n e j a n   r e f e r e n c i a s   a   d i c h o s   v a l o r e s ,   l o s   c u a l e s 
 
 o p e r a c i o n e s   n o   i m p l i c a   n i n g  n   t i p o   d e   c o p i a . 
 
 
 
 E l   t i p o   d e   f u n c i  n   d e   b i b l i o t e c a   d e v u e l v e   u n a   c a d e n a   q u e   d e s c r i b e   e l   t i p o   d e   u n   v a l o r   d a d o . 
 
 
 
 2 . 2 . 1   -   L a   c o a c c i  n 
 
 L u a   o f r e c e   c o n v e r s i  n   a u t o m  t i c a   e n t r e   c a d e n a   y   v a l o r e s   n u m  r i c o s   e n   t i e m p o   d e   e j e c u c i  n .   C u a l q u i e r   o p e r a c i  n   a r i t m  t i c a   a p l i c a d a   a   u n a   c a d e n a 
 
 t r a t a   d e   c o n v e r t i r   e s t a   c a d e n a   e n   u n   n  m e r o ,   s i g u i e n d o   l a s   r e g l a s   d e   c o n v e r s i  n   h a b i t u a l e s .   A   l a   i n v e r s a ,   c u a n d o   u n   n  m e r o   s e   u t i l i z a   c u a n d o 
 
 u n a   c a d e n a   q u e   s e   e s p e r a ,   e l   n  m e r o   s e   c o n v i e r t e   e n   u n a   c a d e n a ,   e n   u n   f o r m a t o   r a z o n a b l e .   P a r a   u n   c o n t r o l   c o m p l e t o   s o b r e   l a   c a n t i d a d   d e   n  m e r o s 
 
 s e   c o n v i e r t e n   e n   c a d e n a s ,   u t i l i c e   l a   f u n c i  n   d e   f o r m a t o   d e   c a d e n a   d e   l a   b i b l i o t e c a   ( v e r   S t r i n g . F o r m a t ) . 
 
 
 
 2 . 3   -   V a r i a b l e s 
 
 L a s   v a r i a b l e s   s o n   l o s   l u g a r e s   q u e   a l m a c e n a n   v a l o r e s .   H a y   t r e s   t i p o s   d e   v a r i a b l e s   e n   L u a :   v a r i a b l e s   g l o b a l e s ,   v a r i a b l e s   l o c a l e s ,   y 
 
 c a m p o s   d e   l a   t a b l a . 
 
 
 
 U n   s o l o   n o m b r e   p u e d e   d e n o t a r   u n a   v a r i a b l e   g l o b a l   o   u n a   v a r i a b l e   l o c a l   ( o   p a r  m e t r o   f o r m a l   d e   u n a   f u n c i  n ,   q u e   e s   u n   p a r t i c u l a r , 
 
 t i p o   d e   v a r i a b l e   l o c a l ) : 
 
 
 
 v a r   : :   =   N o m b r e 
 
 
 
 N o m b r e   d e n o t a   i d e n t i f i c a d o r e s ,   t a l   c o m o   s e   d e f i n e   e n      2 . 1 . 
 
 
 
 C u a l q u i e r   v a r i a b l e   s e   s u p o n e   q u e   e s   g l o b a l   a   m e n o s   q u e   e x p l  c i t a m e n t e   d e c l a r a d o   c o m o   l o c a l   ( v  a s e      2 . 4 . 7 ) .   L a s   v a r i a b l e s   l o c a l e s   s o n   l  x i c a m e n t e 
 
  m b i t o :   l a s   v a r i a b l e s   l o c a l e s   p u e d e   s e r   v i s i t a d o   l i b r e m e n t e   p o r   l a s   f u n c i o n e s   d e f i n i d a s   d e n t r o   d e   s u    m b i t o   d e   a p l i c a c i  n   ( v  a s e      2 . 6 ) . 
 
 
 
 A n t e s   d e   l a   p r i m e r a   a s i g n a c i  n   a   u n a   v a r i a b l e ,   s u   v a l o r   e s   n u l o . 
 
 
 
 L o s   c o r c h e t e s   s e   u s a n   p a r a   i n d e x a r   u n a   t a b l a : 
 
 
 
 v a r   : :   =   p r e f i x e x p   ` [ ' e x p ` ] ' 
 
 
 
 E l   s i g n i f i c a d o   d e   l o s   a c c e s o s   a   l a s   v a r i a b l e s   g l o b a l e s   y   c a m p o s   d e   t a b l a   s e   p u e d e   c a m b i a r   a   t r a v  s   d e   M e t a T a b l e s .   U n   a c c e s o   a   u n    n d i c e 
 
 v a r i a b l e   t   [ i ]   e s   e q u i v a l e n t e   a   u n a   l l a m a d a   g e t t a b l e _ e v e n t   ( t ,   i ) .   ( V e r      2 . 8   p a r a   u n a   d e s c r i p c i  n   c o m p l e t a   d e   l a   g e t t a b l e _ e v e n t 
 
 f u n c i  n .   E s t a   f u n c i  n   n o   e s t    d e f i n i d a   o   s e   p u e d e   l l a m a r   e n   L u a .   S e   u t i l i z a   a q u     n i c a m e n t e   c o n   f i n e s   e x p l i c a t i v o s . ) 
 
 
 
 E l   v a r . N a m e   s i n t a x i s   e s   s i m p l e m e n t e   u n a   a y u d a   s i n t  c t i c a   p a r a   v a r   [ " N o m b r e " ] : 
 
 
 
 v a r   : :   =   p r e f i x e x p   ' . '   N o m b r e 
 
 
 
 T o d a s   l a s   v a r i a b l e s   g l o b a l e s   d e   v i v i r   c o m o   l o s   c a m p o s   e n   l a s   t a b l a s   o r d i n a r i a s   e n   L u a ,   d e n o m i n a d a s   t a b l a s   d e   e n t o r n o   o   s i m p l e m e n t e   e n t o r n o s   ( v  a s e      2 . 9 ) . 
 
 C a d a   f u n c i  n   t i e n e   s u   p r o p i a   r e f e r e n c i a   a   u n   e n t o r n o ,   d e   m o d o   q u e   t o d a s   l a s   v a r i a b l e s   g l o b a l e s   e n   e s t a   f u n c i  n   s e   h a r    r e f e r e n c i a   a   e s t e 
 
 e n t o r n o   d e   l a   t a b l a .   C u a n d o   u n a   f u n c i  n   s e   c r e a ,   s e   h e r e d a   e l   e n t o r n o   d e   l a   f u n c i  n   q u e   l a   c r e  .   P a r a   o b t e n e r   e l 
 
 m e s a   d e   m e d i o   a m b i e n t e   d e   u n a   f u n c i  n   L u a ,   s e   l l a m a   a   g e t f e n v .   P a r a   s u s t i t u i r l o ,   s e   l l a m a   a   s e t f e n v .   ( S  l o   s e   p u e d e   m a n i p u l a r   e l 
 
 m e d i o   a m b i e n t e   d e   l a s   f u n c i o n e s   d e   C   a   t r a v  s   d e   l a   b i b l i o t e c a   d e   d e p u r a c i  n ;   ( v  a s e      5 . 9 ) ) . 
 
 
 
 U n   a c c e s o   a   u n a   v a r i a b l e   x   g l o b a l   e s   e q u i v a l e n t e   a   _ e n v . x ,   q u e   a   s u   v e z   e s   e q u i v a l e n t e   a 
 
 
 
           g e t t a b l e _ e v e n t   ( _ e n v ,   " x " ) 
 
 
 
 d o n d e   _ e n v   e s   e l   a m b i e n t e   d e   l a   f u n c i  n   e n   e j e c u c i  n .   ( V e r      2 . 8   p a r a   u n a   d e s c r i p c i  n   c o m p l e t a   d e   l a   f u n c i  n   g e t t a b l e _ e v e n t . 
 
 E s t a   f u n c i  n   n o   e s t    d e f i n i d a   o   s e   p u e d e   l l a m a r   e n   L u a .   D e   m a n e r a   s i m i l a r ,   l a   v a r i a b l e   _ e n v   n o   e s t    d e f i n i d a   e n   L u a .   L a s   u s a m o s   a q u    s  l o 
 
 c o n   f i n e s   e x p l i c a t i v o s . ) 
 
 
 
 2 . 4   -   L a s   d e c l a r a c i o n e s 
 
 L u a   s o p o r t a   u n   c o n j u n t o   c a s i   c o n v e n c i o n a l   d e   l o s   e s t a d o s ,   s i m i l a r e s   a   l a s   d e   P a s c a l   o   C .   E s t e   c o n j u n t o   i n c l u y e   l a s   a s i g n a c i o n e s , 
 
 e s t r u c t u r a s   d e   c o n t r o l ,   l l a m a d a s   a   f u n c i o n e s   y   d e c l a r a c i o n e s   d e   v a r i a b l e s . 
 
 
 
 2 . 4 . 1   -   T r o z o s 
 
 L a   u n i d a d   d e   e j e c u c i  n   d e   L u a   s e   l l a m a   u n   t r o z o .   U n a   p a r t e   e s   s i m p l e m e n t e   u n a   s e c u e n c i a   d e   s e n t e n c i a s ,   q u e   s e   e j e c u t a n   d e   f o r m a   s e c u e n c i a l . 
 
 C a d a   d e c l a r a c i  n   p u e d e   s e r   o p c i o n a l m e n t e   s e g u i d o   p o r   u n   p u n t o   y   c o m a : 
 
 
 
 t r o z o   : :   =   { S T A T   [ ` ;   ' ] } 
 
 
 
 N o   h a y   d e c l a r a c i o n e s   v a c  a s   y   p o r   l o   t a n t o   ' ; ,   " n o   e s   l e g a l . 
 
 
 
 L u a   s e   e n c a r g a   d e   u n a   p a r t e   c o m o   e l   c u e r p o   d e   u n a   f u n c i  n   a n  n i m a   c o n   u n   n  m e r o   v a r i a b l e   d e   a r g u m e n t o s   ( v  a s e      2 . 5 . 9 ) .   C o m o   t r o z o s   d e   e s t e   t i p o , 
 
 s e   p u e d e n   d e f i n i r   v a r i a b l e s   l o c a l e s ,   r e c i b i r   a r g u m e n t o s   y   v a l o r e s   d e   r e t o r n o . 
 
 
 
 U n a   p a r t e   p u e d e   s e r   a l m a c e n a d a   e n   u n   a r c h i v o   o   e n   u n a   c a d e n a   d e n t r o   d e l   p r o g r a m a   d e   a c o g i d a .   P a r a   e j e c u t a r   u n a   p a r t e ,   L u a   p r i m e r a   p r e - c o m p i l a   e l 
 
 t r o z o   e n   i n s t r u c c i o n e s   p a r a   u n a   m  q u i n a   v i r t u a l ,   y   l u e g o   s e   e j e c u t a   e l   c  d i g o   c o m p i l a d o   c o n   u n   i n t  r p r e t e   d e   l o   v i r t u a l 
 
 m  q u i n a . 
 
 
 
 T r o z o s   t a m b i  n   p u e d e   s e r   p r e - c o m p i l a d o s   e n   f o r m a   b i n a r i a ,   v e r   L u a c   p r o g r a m a   p a r a   m  s   d e t a l l e s .   L o s   p r o g r a m a s   e n   c  d i g o   f u e n t e   y   c o m p i l a d o s   s o n 
 
 i n t e r c a m b i a b l e s ;   L u a   d e t e c t a   a u t o m  t i c a m e n t e   e l   t i p o   d e   a r c h i v o   y   a c t  a   e n   c o n s e c u e n c i a . 
 
 
 
 2 . 4 . 2   -   B l o q u e s 
 
 U n   b l o q u e   e s   u n a   l i s t a   d e   l o s   e s t a d o s ;   s i n t  c t i c a m e n t e ,   u n   b l o q u e   e s   e l   m i s m o   q u e   u n   t r o z o : 
 
 
 
 b l o q u e   : :   =   t r o z o 
 
 
 
 U n   b l o q u e   p u e d e   s e r   d e l i m i t a d o   e x p l  c i t a m e n t e   p a r a   p r o d u c i r   u n a   s o l a   f r a s e : 
 
 
 
 e s t a d  s t i c a s   : :   =   d o   b l o q u e   f i n a l 
 
 
 
 B l o q u e s   e x p l  c i t o s   s o n    t i l e s   p a r a   c o n t r o l a r   e l   a l c a n c e   d e   l a s   d e c l a r a c i o n e s   d e   v a r i a b l e s .   B l o q u e s   e x p l  c i t o s   a   v e c e s   t a m b i  n   s e   u t i l i z a   p a r a   a  a d i r   u n 
 
 v o l v e r   o   b r e a k   e n   m e d i o   d e   o t r o   b l o q u e   ( v  a s e      2 . 4 . 4 ) . 
 
 
 
 2 . 4 . 3   -   A s i g n a c i  n 
 
 L u a   p e r m i t e   a s i g n a c i o n e s   m  l t i p l e s .   P o r   l o   t a n t o ,   l a   s i n t a x i s   d e   a s i g n a c i  n   d e f i n e   u n a   l i s t a   d e   v a r i a b l e s   e n   e l   l a d o   i z q u i e r d o   y   u n a 
 
 l i s t a   d e   e x p r e s i o n e s   e n   e l   l a d o   d e r e c h o .   L o s   e l e m e n t o s   d e   a m b a s   l i s t a s   e s t  n   s e p a r a d o s   p o r   c o m a s : 
 
 
 
 e s t a d  s t i c a s   : :   =   v a r l i s t   ` =   ' e x p l i s t 
 
 v a r l i s t   : :   =   { v a r   ' , '   v a r } 
 
 e x p l i s t   : :   =   e x p   { ' , '   e x p } 
 
 
 
 L a s   e x p r e s i o n e s   s e   d i s c u t e   e n      2 . 5 . 
 
 
 
 A n t e s   d e   l a   c e s i  n ,   l a   l i s t a   d e   v a l o r e s   s e   a j u s t a   a   l a   l o n g i t u d   d e   l a   l i s t a   d e   v a r i a b l e s .   S i   h a y   m  s   v a l o r e s   q u e 
 
 n e c e s a r i o ,   l o s   v a l o r e s   e n   e x c e s o   s e   d e s e c h a .   S i   h a y   m e n o s   v a l o r e s   d e   l o s   n e c e s a r i o s ,   l a   l i s t a   s e   e x t i e n d e   c o n   m u c h a   g e n t e   c o m o   n u l a ,   s e g  n   s e a   n e c e s a r i o .   S i   l a   l i s t a   d e   e x p r e s i o n e s   f i n a l i z a   c o n   u n a   l l a m a d a   a   l a   f u n c i  n ,   t o d o s   l o s   v a l o r e s   d e v u e l t o s   p o r   l a   l l a m a d a   e n t r a r   e n   l a   l i s t a   d e   v a l o r e s ,   a n t e s   d e   q u e   e l   a j u s t e   ( e x c e p t o   c u a n d o   l a   l l a m a d a   s e   e n c u e n t r a   e n t r e   p a r  n t e s i s ,   v  a s e      2 . 5 ) . 
 
 
 
 L a   i n s t r u c c i  n   d e   a s i g n a c i  n   p r i m e r o   e v a l  a   t o d a s   s u s   e x p r e s i o n e s   y   s  l o   e n t o n c e s   s e   l l e v a n   a   c a b o   l a s   t a r e a s .   A s  ,   e l   c  d i g o 
 
 
 
           i   =   3 
 
           i ,   a   [ i ]   =   i   + 1 ,   2 0 
 
 
 
 e s t a b l e c e   u n   [ 3 ]   a   2 0 ,   s i n   q u e   e l l o   a f e c t e   a   [ 4 ]   d e b i d o   a   q u e   l a   i   e n   e l   a   [ i ]   s e   e v a l  a   ( a   3 )   a n t e s   d e   q u e   s e   l e   a s i g n a   4 .   D e   m a n e r a   s i m i l a r ,   e l 
 
 l  n e a 
 
 
 
           x ,   y   =   y ,   x 
 
 
 
 i n t e r c a m b i a   l o s   v a l o r e s   d e   X   e   Y ,   y 
 
 
 
           x ,   y ,   z   =   y ,   z ,   x 
 
 
 
 c  c l i c a m e n t e   p e r m u t a   l o s   v a l o r e s   d e   x ,   y ,   z . 
 
 
 
 E l   s i g n i f i c a d o   d e   l a s   a s i g n a c i o n e s   a   l a s   v a r i a b l e s   g l o b a l e s   y   c a m p o s   d e   t a b l a   s e   p u e d e   c a m b i a r   a   t r a v  s   d e   M e t a T a b l e s .   L a   c e s i  n   a   u n    n d i c e 
 
 v a r i a b l e   t   [ i ]   =   v a l   e s   e q u i v a l e n t e   a   s e t t a b l e _ e v e n t   ( t ,   i ,   v a l ) .   ( V e r      2 . 8   p a r a   u n a   d e s c r i p c i  n   c o m p l e t a   d e   l a   s e t t a b l e _ e v e n t 
 
 f u n c i  n .   E s t a   f u n c i  n   n o   e s t    d e f i n i d a   o   s e   p u e d e   l l a m a r   e n   L u a .   S e   u t i l i z a   a q u     n i c a m e n t e   c o n   f i n e s   e x p l i c a t i v o s . ) 
 
 
 
 U n a   a s i g n a c i  n   a   u n a   v a r i a b l e   g l o b a l   x   =   v a l   e s   e q u i v a l e n t e   a   l a   a s i g n a c i  n   _ e n v . x   =   v a l ,   q u e   a   s u   v e z   e s   e q u i v a l e n t e   a 
 
 
 
           s e t t a b l e _ e v e n t   ( _ e n v ,   " x " ,   v a l ) 
 
 
 
 d o n d e   _ e n v   e s   e l   a m b i e n t e   d e   l a   f u n c i  n   e n   e j e c u c i  n .   ( L a   v a r i a b l e   _ e n v   n o   e s t    d e f i n i d a   e n   L u a .   S e   u t i l i z a   a q u    s  l o   p a r a 
 
 f i n e s   e x p l i c a t i v o s . ) 
 
 
 
 2 . 4 . 4   -   E s t r u c t u r a s   d e   C o n t r o l 
 
 L a s   e s t r u c t u r a s   d e   c o n t r o l   i f ,   w h i l e   y   r e p e a t   t i e n e n   e l   s i g n i f i c a d o   h a b i t u a l   y   l a   s i n t a x i s   f a m i l i a r : 
 
 
 
 N  m e r o s   q u e   h a b l a n   a l   m i s m o   t i e m p o   : :   =   e x p   h a c e r l o   b l o q u e   f i n a l 
 
 e s t a d  s t i c a s   : :   =   r e p e t i c i  n   b l o q u e   h a s t a   q u e   e x p 
 
 e s t a d  s t i c a s   : :   =   e x p   s i   e n t o n c e s   e l   b l o q u e   { e l s e i f   e x p   e n t o n c e s   e l   b l o q u e }   [ b l o q u e   e l s e ]   f i n a l 
 
 
 
 L u a   t a m b i  n   t i e n e   u n a   s e n t e n c i a ,   e n   d o s   s a b o r e s   ( v  a s e      2 . 4 . 5 ) . 
 
 
 
 L a   e x p r e s i  n   d e   l a   c o n d i c i  n   d e   u n a   e s t r u c t u r a   d e   c o n t r o l   p u e d e   d e v o l v e r   c u a l q u i e r   v a l o r .   F a l s e   y   n i l   s o n   c o n s i d e r a d a s   f a l s a s .   T o d o s   l o s   v a l o r e s 
 
 d i f e r e n t e   d e   c e r o   y   f a l s o   s e   c o n s i d e r a n   v e r d a d e r o   ( e n   p a r t i c u l a r ,   e l   n  m e r o   0   y   l a   c a d e n a   v a c  a   s o n   t a m b i  n   v e r d a d ) . 
 
 
 
 E n   e l   b u c l e   r e p e a t - u n t i l ,   e l   b l o q u e   i n t e r n o   n o   t e r m i n a   e n   l a   p a l a b r a   c l a v e   u n t i l ,   p e r o   s  l o   d e s p u  s   d e   l a   e n f e r m e d a d .   A s  ,   e l 
 
 c o n d i c i  n   p u e d e   r e f e r i r s e   a   l a s   v a r i a b l e s   l o c a l e s   d e c l a r a d a s   e n   e l   b l o q u e   d e l   b u c l e . 
 
 
 
 L a   s e n t e n c i a   r e t u r n   s e   u t i l i z a   p a r a   d e v o l v e r   v a l o r e s   d e   u n a   f u n c i  n   o   u n   t r o z o   ( q u e   e s   s  l o   u n a   f u n c i  n ) .   F u n c i o n e s   y   t r o z o s 
 
 p u e d e   d e v o l v e r   m  s   d e   u n   v a l o r ,   p o r   l o   q u e   l a   s i n t a x i s   d e   l a   i n s t r u c c i  n   d e   r e t o r n o   e s 
 
 
 
 e s t a d  s t i c a s   : :   =   r e t o r n o   [ e x p l i s t ] 
 
 
 
 L a   s e n t e n c i a   b r e a k   s e   u t i l i z a   p a r a   t e r m i n a r   l a   e j e c u c i  n   d e   u n   t i e m p o ,   l a   r e p e t i c i  n ,   o   p o r   b u c l e ,   s a l t  n d o s e   a   l a   s i g u i e n t e   i n s t r u c c i  n 
 
 d e s p u  s   d e l   b u c l e : 
 
 
 
 e s t a d  s t i c a s   : :   =   p a u s a 
 
 
 
 U n   b r e a k   f i n a l i z a   e l   b u c l e   m  s   i n t e r i o r   q u e   e n c i e r r a . 
 
 
 
 E l   r e t o r n o   y   l a s   s e n t e n c i a s   b r e a k   s  l o   p u e d e   s e r   e s c r i t o   c o m o   l a    l t i m a   i n s t r u c c i  n   d e   u n   b l o q u e .   S i   e s   r e a l m e n t e   n e c e s a r i o   v o l v e r 
 
 o   r o m p e r   e n   e l   c e n t r o   d e   u n   b l o q u e ,   y   l u e g o   u n   b l o q u e   i n t e r n o   e x p l  c i t o   p u e d e   s e r   u t i l i z a d o ,   c o m o   e n   l o s   i d i o m a s   t e r m i n a n   v u e l t a   y   r o m p e r   l o 
 
 f i n a l ,   y a   q u e   a h o r a   r e g r e s a n   y   s e   r o m p e n   s o n   l o s    l t i m o s   e s t a d o s   e n   s u s   ( i n t e r i o r )   b l o q u e s . 
 
 
 
 2 . 4 . 5   -   P a r a   l a   D e c l a r a c i  n   d e 
 
 L a   s e n t e n c i a   t i e n e   d o s   f o r m a s :   u n o   n u m  r i c o   y   u n o   g e n  r i c o . 
 
 
 
 E l   v a l o r   n u m  r i c o   p a r a   e l   b u c l e   s e   r e p i t e   u n   b l o q u e   d e   c  d i g o   m i e n t r a s   q u e   u n a   v a r i a b l e   d e   c o n t r o l   s e   e j e c u t a   a   t r a v  s   d e   u n a   p r o g r e s i  n   a r i t m  t i c a .   T i e n e   e l 
 
 l a   s i n t a x i s   s i g u i e n t e : 
 
 
 
 e s t a d  s t i c a s   : :   =   N o m b r e   d e   ` =   ' e x p ' ,   ' e x p   [ ` , '   e x p ]   h a c e r   b l o q u e   f i n a l 
 
 
 
 E l   b l o q u e   s e   r e p i t e   p a r a   e l   n o m b r e   d e   p a r t i d a   e n   e l   v a l o r   d e   l a   p r i m e r a   e x p ,   h a s t a   q u e   p a s a   l a   s e g u n d a   e x p   p o r   p a s o s   d e   l a   t e r c e r a 
 
 e x p .   M  s   p r e c i s a m e n t e ,   c o m o   u n a   d e c l a r a c i  n   p a r a 
 
 
 
           p a r a   v   =   e 1 ,   e 2 ,   e 3   t e r m i n a n   b l o q u e 
 
 
 
 e s   e q u i v a l e n t e   a l   c  d i g o : 
 
 
 
           h a c e r 
 
               v a r ,   l  m i t e ,   p a s o   =   t o n u m b e r   ( E 1 ) ,   t o n u m b e r   ( E 2 ) ,   t o n u m b e r   ( E 3 ) 
 
               s i   n o   ( v a r   y   l  m i t e   y   p a s o ) ,   e n t o n c e s   e l   e r r o r   ( )   f i n a l 
 
               w h i l e   ( p a s o >   0   y   v a r   < =   l  m i t e )   o   ( p a s o   < =   0   y   v a r >   =   l  m i t e )   h a c e r 
 
                   l o c a l   d e   v   =   v a r 
 
                   b l o q u e a r 
 
                   v a r   =   v a r   +   p a s o 
 
               f i n a l 
 
           f i n a l 
 
 
 
 T e n g a   e n   c u e n t a   l o   s i g u i e n t e : 
 
 
 
 L a s   t r e s   e x p r e s i o n e s   d e   c o n t r o l   s e   e v a l  a   s  l o   u n a   v e z ,   a n t e s   d e   q u e   c o m i e n c e   e l   b u c l e .   T o d o s   e l l o s   d e b e n   d a r   l u g a r   a   l o s   n  m e r o s . 
 
 v a r ,   e l   l  m i t e   y   p a s o   s o n   v a r i a b l e s   i n v i s i b l e s .   L o s   n o m b r e s   q u e   a p a r e c e n   a q u    s o n    n i c a m e n t e   c o n   f i n e s   e x p l i c a t i v o s . 
 
 S i   l a   t e r c e r a   e x p r e s i  n   ( e l   p a s o )   e s t    a u s e n t e ,   e n t o n c e s   u n   p a s o   d e   1   s e   u t i l i z a . 
 
 U s t e d   p u e d e   u t i l i z a r   b r e a k   p a r a   s a l i r   d e   u n   b u c l e   f o r . 
 
 L a   v a r i a b l e   d e   b u c l e   v   e s   l o c a l   a l   b u c l e ,   n o   s e   p u e d e   u t i l i z a r   s u   v a l o r   d e s p u  s   d e   l a   d e   l o s   e x t r e m o s   o   s e   r o m p e .   S i   u s t e d   n e c e s i t a   e s t e   v a l o r , 
 
 a s i g n a r l a   a   o t r a   v a r i a b l e   a n t e s   d e   r o m p e r   o   s a l i r   d e l   b u c l e . 
 
 E l   g e n  r i c o   d e   l a   d e c l a r a c i  n   f u n c i o n a   a   t r a v  s   d e   f u n c i o n e s ,   i t e r a d o r e s   l l a m a d a s .   E n   c a d a   i t e r a c i  n ,   l a   f u n c i  n   d e   r e p e t i d o r   e s t    l l a m a d o   a 
 
 p r o d u c i r   u n   n u e v o   v a l o r   y   s e   d e t e n d r    c u a n d o   e s t e   n u e v o   v a l o r   e s   n u l o .   E l   g e n  r i c o   d e   b u c l e   t i e n e   l a   s i g u i e n t e   s i n t a x i s : 
 
 
 
 e s t a d  s t i c a s   : :   =   l i s t a   d e   n o m b r e s   p a r a   h a c e r   e n   e l   b l o q u e   f i n a l   e x p l i s t 
 
 l i s t a   d e   n o m b r e s   : :   N o m b r e   =   { ' , '   N o m b r e } 
 
 
 
 U n a   d e c l a r a c i  n   d e   c o m o 
 
 
 
           d e   V A R _ 1 ,          ,   v a r _ n   e n   e x p l i s t   t e r m i n a n   b l o q u e 
 
 
 
 e s   e q u i v a l e n t e   a l   c  d i g o : 
 
 
 
           h a c e r 
 
               f   l o c a l ,   s ,   v a r   =   e x p l i s t 
 
               S i   b i e n   e s   c i e r t o   l o 
 
                   V A R _ 1   l o c a l e s ,          ,   v a r _ n   =   f   ( s ,   v a r ) 
 
                   v a r   =   V A R _ 1 
 
                   s i   v a r   = =   n i l   e n t o n c e s   e s c a p a d a   d e   f i n   d e 
 
                   b l o q u e a r 
 
               f i n a l 
 
           f i n a l 
 
 
 
 T e n g a   e n   c u e n t a   l o   s i g u i e n t e : 
 
 
 
 e x p l i s t   s e   e v a l  a   s  l o   u n a   v e z .   S u s   r e s u l t a d o s   s o n   u n a   f u n c i  n   d e   i t e r a d o r ,   u n   e s t a d o ,   y   u n   v a l o r   i n i c i a l   p a r a   e l   p r i m e r   i t e r a d o r 
 
 v a r i a b l e . 
 
 f ,   s ,   y   v a r   s o n   v a r i a b l e s   i n v i s i b l e s .   L o s   n o m b r e s   e s t  n   a q u     n i c a m e n t e   c o n   f i n e s   e x p l i c a t i v o s . 
 
 U s t e d   p u e d e   u t i l i z a r   b r e a k   p a r a   s a l i r   d e   u n   b u c l e   f o r . 
 
 L a s   v a r i a b l e s   d e l   b u c l e   v a r _ i   s o n   l o c a l e s   a l   b u c l e ,   n o   p u e d e   u t i l i z a r   s u s   v a l o r e s   d e s p u  s   d e   l a   d e   l o s   e x t r e m o s .   S i   u s t e d   n e c e s i t a   e s t o s   v a l o r e s , 
 
 a   c o n t i n u a c i  n ,   a s i g n a r l o s   a   o t r a s   v a r i a b l e s   a n t e s   d e   r o m p e r   o   s a l i r   d e l   b u c l e . 
 
 2 . 4 . 6   -   D e c l a r a c i o n e s   c o m o   l a s   l l a m a d a s   a   f u n c i o n e s 
 
 P a r a   p e r m i t i r   q u e   l o s   p o s i b l e s   e f e c t o s   s e c u n d a r i o s ,   l a s   l l a m a d a s   a   f u n c i o n e s   s e   p u e d e n   e j e c u t a r   c o m o   d e c l a r a c i o n e s : 
 
 
 
 e s t a d  s t i c a s   : :   =   F u n c t i o n C a l l 
 
 
 
 E n   e s t e   c a s o ,   t o d o s   l o s   v a l o r e s   d e v u e l t o s   s e   d e s e c h a n .   L a s   l l a m a d a s   a   f u n c i o n e s   s e   e x p l i c a n   e n      2 . 5 . 8 . 
 
 
 
 2 . 4 . 7   -   D e c l a r a c i o n e s   l o c a l e s 
 
 L a s   v a r i a b l e s   l o c a l e s   p u e d e n   s e r   d e c l a r a d a s   e n   c u a l q u i e r   l u g a r   d e n t r o   d e   u n   b l o q u e .   L a   d e c l a r a c i  n   p u e d e   i n c l u i r   u n a   a s i g n a c i  n   i n i c i a l : 
 
 
 
 e s t a d  s t i c a s   : :   =   l i s t a   d e   n o m b r e s   l o c a l   [ ' = '   e x p l i s t ] 
 
 
 
 S i   e s t    p r e s e n t e ,   u n a   a s i g n a c i  n   i n i c i a l   t i e n e   l a   m i s m a   s e m  n t i c a   d e   u n a   a s i g n a c i  n   m  l t i p l e   ( v  a s e      2 . 4 . 3 ) .   D e   l o   c o n t r a r i o ,   t o d a s   l a s   v a r i a b l e s 
 
 s e   i n i c i a l i z a n   c o n   c e r o . 
 
 
 
 U n a   p a r t e   t a m b i  n   e s   u n   b l o q u e   ( v  a s e      2 . 4 . 1 ) ,   y   l a s   v a r i a b l e s   l o c a l e s   s e   p u e d e n   d e c l a r a r   e n   u n a   p a r t e   f u e r a   d e   c u a l q u i e r   b l o q u e   e x p l  c i t o .   L a 
 
  m b i t o   d e   a p l i c a c i  n   d e   d i c h a s   v a r i a b l e s   l o c a l e s   s e   e x t i e n d e   h a s t a   e l   f i n a l   d e l   f r a g m e n t o . 
 
 
 
 L a s   r e g l a s   d e   v i s i b i l i d a d   p a r a   l a s   v a r i a b l e s   l o c a l e s   s e   e x p l i c a n   e n      2 . 6 . 
 
 
 
 2 . 5   -   E x p r e s i o n e s 
 
 L a s   e x p r e s i o n e s   b  s i c a s   e n   L u a   s o n   l o s   s i g u i e n t e s : 
 
 
 
 e x p   : :   =   p r e f i x e x p 
 
 e x p   : :   =   n i l   |   f a l s e   |   t r u e 
 
 e x p   : :   =   N  m e r o 
 
 e x p   : :   =   c a d e n a 
 
 e x p   : :   =   f u n c t i o n 
 
 e x p   : :   =   t a b l e c o n s t r u c t o r 
 
 e x p   : :   =   ' . . . ' 
 
 e x p   : :   =   e x p   e x p   b i n o p 
 
 e x p   : :   =   U N O P   e x p 
 
 p r e f i x e x p   : :   =   v a r   |   F u n c t i o n C a l l   |   ` ( ' e x p ' )   ' 
 
 
 
 L o s   n  m e r o s   y   l a s   c a d e n a s   l i t e r a l e s   s e   e x p l i c a n   e n      2 . 1 ,   l a s   v a r i a b l e s   s e   e x p l i c a n   e n      2 . 3 ,   l a   d e f i n i c i  n   d e   f u n c i o n e s   s e   e x p l i c a n   e n 
 
    2 . 5 . 9 ,   l a s   l l a m a d a s   a   f u n c i o n e s   s e   e x p l i c a n   e n      2 . 5 . 8 ;   c o n s t r u c t o r e s   d e   t a b l a s   s e   e x p l i c a n   e n      2 . 5 . 7 .   E x p r e s i o n e s   v a r a r g ,   i n d i c a d o s   p o r   t r e s   p u n t o s   ( ' . . . ' ) ,   s  l o   s e   p u e d e   u t i l i z a r   c u a n d o   e s t    d i r e c t a m e n t e   d e n t r o   d e   u n a   f u n c i  n   v a r a r g ,   s i n o   q u e   s e   e x p l i c a n   e n      2 . 5 . 9 . 
 
 
 
 L o s   o p e r a d o r e s   b i n a r i o s   c o m p r e n d e n   l o s   o p e r a d o r e s   a r i t m  t i c o s   ( v  a s e      2 . 5 . 1 ) ,   l o s   o p e r a d o r e s   r e l a c i o n a l e s   ( v  a s e      2 . 5 . 2 ) ,   l o s   o p e r a d o r e s   l  g i c o s 
 
 ( V  a s e      2 . 5 . 3 ) ,   y   e l   o p e r a d o r   d e   c o n c a t e n a c i  n   ( v  a s e      2 . 5 . 4 ) .   L o s   o p e r a d o r e s   u n a r i o s   c o m p r e n d e n   e l   m e n o s   u n a r i o   ( v  a s e      2 . 5 . 1 ) ,   e l   u n a r i o 
 
 n o   ( v  a s e      2 . 5 . 3 ) ,   y   e l   o p e r a d o r   d e   l o n g i t u d   u n a r i o   ( v  a s e      2 . 5 . 5 ) . 
 
 
 
 T a n t o   l a s   l l a m a d a s   a   f u n c i o n e s   y   e x p r e s i o n e s   v a r a r g   p u e d e   d a r   l u g a r   a   v a r i o s   v a l o r e s .   S i   u n a   e x p r e s i  n   s e   u t i l i z a   c o m o   u n a   d e c l a r a c i  n 
 
 ( S  l o   p o s i b l e   p a r a   l a s   l l a m a d a s   a   f u n c i o n e s   ( v  a s e      2 . 4 . 6 ) ) ,   e n t o n c e s   s u   l i s t a   d e   r e t o r n o   s e   a j u s t a   a   c e r o   e l e m e n t o s ,   l o   q u e   s e   d e s c a r t a   t o d a 
 
 l o s   v a l o r e s   d e v u e l t o s .   S i   u n a   e x p r e s i  n   s e   u s a   c o m o   e l    l t i m o   ( o   e l    n i c o )   e l e m e n t o   d e   u n a   l i s t a   d e   e x p r e s i o n e s ,   e n t o n c e s   n o   e s   e l   a j u s t e 
 
 h i z o   ( a   m e n o s   q u e   l a   l l a m a d a   e s t    e n c e r r a d o   e n t r e   p a r  n t e s i s ) .   E n   l o s   d e m  s   c a s o s ,   L u a   a j u s t a   l a   l i s t a   d e   r e s u l t a d o s   d e   u n o   d e   l o s   e l e m e n t o s , 
 
 d e s c a r t a n d o   t o d o s   l o s   v a l o r e s   e x c e p t o   e l   p r i m e r o . 
 
 
 
 H e   a q u    a l g u n o s   e j e m p l o s : 
 
 
 
           f   ( )   -   a j u s t a d o   a   0   r e s u l t a d o s 
 
           g   ( f   ( ) ,   x )   -   f   ( )   s e   a j u s t a   a   u n   r e s u l t a d o 
 
           g   ( x ,   f   ( ) )   -   g   o b t i e n e   x   m  s   t o d o s   l o s   r e s u l t a d o s   d e   f   ( ) 
 
           a ,   b ,   c   =   f   ( ) ,   x   -   f   ( )   s e   a j u s t a   a   1   r e s u l t a d o   ( c   c o n s i g u e   n i l ) 
 
           a ,   b   =   . . .   -   U n o   s e   p o n e   e l   p a r  m e t r o   v a r a r g   e n   p r i m e r   l u g a r ,   s e   b 
 
                                                 -   L a   s e g u n d a   ( A   y   B   p u e d e   c o n s e g u i r   n a d a   s i   n o 
 
                                                 -   H a y   n i n g  n   p a r  m e t r o   v a r a r g   c o r r e s p o n d i e n t e ) 
 
           
 
           a ,   b ,   c   =   x ,   f   ( )   -   f   ( )   s e   a j u s t    a   2   r e s u l t a d o s 
 
           a ,   b ,   c   =   f   ( )   -   f   ( )   s e   a j u s t    a   3   r e s u l t a d o s 
 
           f   r e t u r n   ( )   -   d e v u e l v e   t o d o s   l o s   r e s u l t a d o s   d e   f   ( ) 
 
           v o l v e r   . . .   -   D e v u e l v e   t o d o s   l o s   p a r  m e t r o s   r e c i b i d o s   v a r a r g 
 
           r e t o r n o   x ,   y ,   f   ( )   -   d e v u e l v e   x ,   y ,   y   t o d o s   l o s   r e s u l t a d o s   d e   F   ( ) 
 
           { F   ( ) }   -   c r e a   u n a   l i s t a   c o n   t o d o s   l o s   r e s u l t a d o s   d e   f   ( ) 
 
           { . . . }   -   S e   c r e a   u n a   l i s t a   c o n   t o d o s   l o s   p a r  m e t r o s   v a r a r g 
 
           { F   ( ) ,   n i l }   -   f   ( )   s e   a j u s t a   a   u n   r e s u l t a d o 
 
 
 
 C u a l q u i e r   e x p r e s i  n   e n c e r r a d a   e n t r e   p a r  n t e s i s   s i e m p r e   d a   c o m o   r e s u l t a d o   u n    n i c o   v a l o r .   P o r   l o   t a n t o ,   ( f   ( x ,   y ,   z ) )   e s   s i e m p r e   u n   v a l o r    n i c o ,   i n c l u s o   s i 
 
 f   d e v u e l v e   v a r i o s   v a l o r e s .   ( E l   v a l o r   d e   ( f   ( x ,   y ,   z ) )   e s   e l   p r i m e r   v a l o r   d e v u e l t o   p o r   f   o   n i l   s i   f   n o   d e v u e l v e n   n i n g  n   v a l o r . ) 
 
 
 
 2 . 5 . 1   -   O p e r a d o r e s   a r i t m  t i c o s 
 
 L u a   s o p o r t a   l o s   o p e r a d o r e s   a r i t m  t i c o s   h a b i t u a l e s :   e l   b i n a r i o   +   ( s u m a ) ,   -   ( r e s t a ) ,   *   ( m u l t i p l i c a c i  n ) ,   /   ( d i v i s i  n ) , 
 
 %   ( M  d u l o )   y   ^   ( e x p o n e n c i a c i  n ) ,   y   u n a r i o   -   ( n e g a c i  n ) .   S i   l o s   o p e r a n d o s   s o n   n  m e r o s   o   c a d e n a s   q u e   s e   p u e d e n   c o n v e r t i r 
 
 a   l o s   n  m e r o s   ( v e r      2 . 2 . 1 ) ,   e n t o n c e s   t o d a s   l a s   o p e r a c i o n e s   t i e n e n   e l   s i g n i f i c a d o   h a b i t u a l .   E x p o n e n c i a c i  n   f u n c i o n a   p a r a   c u a l q u i e r   e x p o n e n t e .   P o r   e j e m p l o , 
 
 x   ^   ( - 0 , 5 )   c a l c u l a   l a   i n v e r s a   d e   l a   r a  z   c u a d r a d a   d e   x .   M  d u l o   s e   d e f i n e   c o m o 
 
 
 
           u n %   b   = =   u n a   -   M a t h . f l o o r   ( a   /   b )   *   b 
 
 
 
 E s   d e c i r ,   e s   e l   r e s t o   d e   u n a   d i v i s i  n   q u e   r e d o n d e a   e l   c o c i e n t e   h a c i a   m e n o s   i n f i n i t o . 
 
 
 
 2 . 5 . 2   -   O p e r a d o r e s   r e l a c i o n a l e s 
 
 L o s   o p e r a d o r e s   r e l a c i o n a l e s   e n   L u a   s o n 
 
 
 
           = =   ~   =   < >   < = >   = 
 
 
 
 E s t o s   o p e r a d o r e s   s i e m p r e   s e   t r a d u c e   e n   f a l s o   o   v e r d a d e r o . 
 
 
 
 L a   i g u a l d a d   ( = = )   p r i m e r o   c o m p a r a   e l   t i p o   d e   s u s   o p e r a n d o s .   S i   l o s   t i p o s   s o n   d i f e r e n t e s ,   e n t o n c e s   e l   r e s u l t a d o   e s   f a l s o .   D e   l o   c o n t r a r i o ,   e l 
 
 L o s   v a l o r e s   d e   l o s   o p e r a n d o s   s o n   c o m p a r a d o s .   N  m e r o s   y   c a d e n a s   s e   c o m p a r a n   e n   l a   f o r m a   h a b i t u a l .   L o s   o b j e t o s   ( t a b l a s ,   u s e r d a t a ,   h i l o s , 
 
 y   l a s   f u n c i o n e s )   s e   c o m p a r a n   p o r   r e f e r e n c i a :   d o s   o b j e t o s   s e   c o n s i d e r a n   i g u a l e s   s  l o   s i   s o n   e l   m i s m o   o b j e t o .   C a d a   v e z   q u e 
 
 c r e a r   u n   n u e v o   o b j e t o   ( u n a   m e s a ,   u s e r d a t a ,   h i l o ,   o   l a   f u n c i  n ) ,   e s t e   n u e v o   o b j e t o   e s   d i f e r e n t e   d e   c u a l q u i e r   o t r o   y a   e x i s t e n t e 
 
 o b j e t o . 
 
 
 
 P u e d e   c a m b i a r   l a   f o r m a   e n   q u e   L u a   c o m p a r a   t a b l a s   y   u s e r d a t a   m e d i a n t e   e l   u s o   d e   l a   " e c u a c i  n "   m e t a m  t o d o   ( v  a s e      2 . 8 ) . 
 
 
 
 L a s   r e g l a s   d e   c o n v e r s i  n   d e      2 . 2 . 1   n o   s e   a p l i c a n   a   l a s   c o m p a r a c i o n e s   d e   i g u a l d a d .   P o r   l o   t a n t o ,   " 0 "   = =   0   s e   e v a l  a   c o m o   f a l s a ,   y   t   [ 0 ]   y   t   [ " 0 " ] 
 
 d e n o t a n   d i f e r e n t e s   e n t r a d a s   d e   u n a   t a b l a . 
 
 
 
 E l   o p e r a d o r   ~   =   e s   e x a c t a m e n t e   l a   n e g a c i  n   d e   l a   i g u a l d a d   ( = = ) . 
 
 
 
 L o s   o p e r a d o r e s   d e   o r d e n   d e   t r a b a j o   d e   l a   s i g u i e n t e   m a n e r a .   S i   a m b o s   a r g u m e n t o s   s o n   n  m e r o s ,   a   c o n t i n u a c i  n ,   s e   c o m p a r a n   c o m o   t a l e s .   E n   c a s o   c o n t r a r i o ,   s i   a m b o s 
 
 a r g u m e n t o s   s o n   c a d e n a s ,   e n t o n c e s   s u s   v a l o r e s   s o n   c o m p a r a d o s   d e   a c u e r d o   a   l a   l o c a l i z a c i  n   a c t u a l .   D e   l o   c o n t r a r i o ,   L u a   i n t e n t a   l l a m a r   a   l a 
 
 " L T "   o   e l   " l e "   m e t a m  t o d o   ( v  a s e      2 . 8 ) .   U n a   c o m p a r a c i  n   a >   b   s e   t r a d u c e   a   B   < A   y   u n >   =   b   e s   t r a d u c i d o   a   b   < =   a . 
 
 
 
 2 . 5 . 3   -   O p e r a d o r e s   l  g i c o s 
 
 L o s   o p e r a d o r e s   l  g i c o s   e n   L u a   s o n   a n d ,   o r ,   y   n o .   A l   i g u a l   q u e   l a s   e s t r u c t u r a s   d e   c o n t r o l   ( v  a s e      2 . 4 . 4 ) ,   t o d o s   l o s   o p e r a d o r e s   l  g i c o s   e n   c u e n t a 
 
 f a l s e   y   n i l   c o m o   f a l s o   y   c u a l q u i e r   o t r a   c o s a   c o m o   v e r d a d e r a . 
 
 
 
 E l   o p e r a d o r   d e   n e g a c i  n ,   n o   s i e m p r e   d e v u e l v e   f a l s o   o   v e r d a d e r o .   E l   o p e r a d o r   d e   c o n j u n c i  n   y   d e v u e l v e   s u   p r i m e r   a r g u m e n t o   s i   e s t e 
 
 v a l o r   e s   f a l s a   o   n u l a ,   d e   l o   c o n t r a r i o ,   y   d e v u e l v e   s u   s e g u n d o   a r g u m e n t o .   E l   o p e r a d o r   d e   d i s y u n c i  n   o   d e v u e l v e   s u   p r i m e r   a r g u m e n t o 
 
 s i   e s t e   v a l o r   e s   d i f e r e n t e   d e   c e r o   y   f a l s o ,   d e   l o   c o n t r a r i o ,   o   d e v u e l v e   s u   s e g u n d o   a r g u m e n t o .   A N D   y   O R   u t i l i z a   a t a j o 
 
 e v a l u a c i  n ,   e s   d e c i r ,   e l   s e g u n d o   o p e r a n d o   s  l o   s e   e v a l  a   s i   e s   n e c e s a r i o .   H e   a q u    a l g u n o s   e j e m p l o s : 
 
 
 
           1 0   o   2 0   - >   1 0 
 
           1 0   o   e r r o r   ( )   - >   1 0 
 
           n u l a   o   " a "   - >   " a " 
 
           c e r o   y   1 0   - >   n i l 
 
           f a l s a   y   e l   e r r o r   ( )   - >   f a l s o 
 
           f a l s a s   y   n u l o   - >   F a l s o 
 
           f a l s a   o   n u l a   - >   n i l 
 
           1 0   y   2 0   - >   2 0 
 
 
 
 ( E n   e s t e   m a n u a l ,   - >   i n d i c a   e l   r e s u l t a d o   d e   l a   e x p r e s i  n   a n t e r i o r . ) 
 
 
 
 2 . 5 . 4   -   C o n c a t e n a c i  n 
 
 E l   o p e r a d o r   d e   c o n c a t e n a c i  n   d e   c a d e n a s   e n   L u a   s e   d e n o t a   p o r   d o s   p u n t o s   ( " . . " ) .   S i   a m b o s   o p e r a n d o s   s o n   c a d e n a s   o   n  m e r o s ,   e n t o n c e s 
 
 s e   c o n v i e r t e n   e n   c a d e n a s   d e   a c u e r d o   a   l a s   n o r m a s   m e n c i o n a d a s   e n   e l      2 . 2 . 1 .   D e   l o   c o n t r a r i o ,   e l   " c o n c a t "   m e t a m  t o d o   s e   l l a m a   ( v  a s e      2 . 8 ) . 
 
 
 
 2 . 5 . 5   -   E l   o p e r a d o r   d e   l o n g i t u d 
 
 E l   o p e r a d o r   d e   l o n g i t u d   s e   d e n o t a   p o r   e l   o p e r a d o r   u n a r i o   # .   L a   l o n g i t u d   d e   u n a   c a d e n a   e s   s u   n  m e r o   d e   b y t e s   ( e s   d e c i r ,   l a   h a b i t u a l 
 
 e l   s i g n i f i c a d o   d e   l o n g i t u d   d e   l a   c a d e n a   e n   q u e   c a d a   p e r s o n a j e   e s   u n   b y t e ) . 
 
 
 
 L a   l o n g i t u d   d e   l a   t a b l a   t   s e   d e f i n e   c o m o   u n    n d i c e   e n t e r o   n   t a l   q u e   t   [ n ]   n o   e s   i g u a l   a   c e r o   y   t   [ n   + 1 ]   e s   i g u a l   a   c e r o ; ,   p o r   o t r a   p a r t e 
 
 s i   t   [ 1 ]   e s   i g u a l   a   c e r o ,   n   p u e d e   s e r   c e r o .   P a r a   u n a   m a t r i z   r e g u l a r ,   c o n   n o - n i l   v a l o r e s   d e   1   a   u n   n   d a d o ,   s u   l o n g i t u d   e s   e x a c t a m e n t e   l o   q u e   n , 
 
 e l    n d i c e   d e   s u   v a l o r   a n t e r i o r .   S i   l a   m a t r i z   t i e n e   " a g u j e r o s "   ( e s   d e c i r ,   l o s   v a l o r e s   n u l o s   e n t r e   o t r o s   v a l o r e s   d e   n o - n i l ) ,   e n t o n c e s   #   t   p u e d e   s e r 
 
 c u a l q u i e r a   d e   l o s    n d i c e s   q u e   p r e c e d e   d i r e c t a m e n t e   a   u n   v a l o r   n u l o   ( e s   d e c i r ,   s e   p u e d e   c o n s i d e r a r   c u a l q u i e r   v a l o r   n u l o ,   t a l e s   c o m o   e l   f i n a l   d e   l a   m a t r i z ) . 
 
 
 
 2 . 5 . 6   -   P r e c e d e n c i a 
 
 L a   p r e c e d e n c i a   d e   o p e r a d o r e s   e n   L u a   s i g u e   a   l a   t a b l a   d e   a b a j o ,   d e   m e n o r   a   m a y o r   p r i o r i d a d : 
 
 
 
           o 
 
           y 
 
           < >   < = >   =   ~   = = = 
 
           . . 
 
           +   - 
 
           *   / % 
 
           N o   #   -   ( u n a r i o ) 
 
           ^ 
 
 
 
 C o m o   d e   c o s t u m b r e ,   s e   p u e d e n   u t i l i z a r   p a r  n t e s i s   p a r a   c a m b i a r   l a   p r e c e d e n c i a   d e   u n a   e x p r e s i  n .   L a   c o n c a t e n a c i  n   ( ' . . ' )   y   e x p o n e n c i a c i  n 
 
 ( ' ^ ' )   S o n   o p e r a d o r e s   a s o c i a t i v o s   p o r   l a   d e r e c h a .   T o d o s   l o s   d e m  s   o p e r a d o r e s   b i n a r i o s   s o n   a s o c i a t i v o s   p o r   l a   i z q u i e r d a . 
 
 
 
 2 . 5 . 7   -   C o n s t r u c t o r e s   d e   m e s a 
 
 C o n s t r u c t o r e s   d e   l a   t a b l a   s o n   l a s   e x p r e s i o n e s   q u e   c r e a n   t a b l a s .   C a d a   v e z   q u e   s e   e v a l  a   u n   c o n s t r u c t o r ,   u n a   n u e v a   m e s a   e s t    c r e a d a .   A 
 
 c o n s t r u c t o r   p u e d e   s e r   u s a d o   p a r a   c r e a r   u n a   t a b l a   v a c  a   o   p a r a   c r e a r   u n a   t a b l a   e   i n i c i a l i z a r   a l g u n o s   d e   s u s   c a m p o s .   L a   s i n t a x i s   g e n e r a l 
 
 p a r a   l o s   c o n s t r u c t o r e s   e s 
 
 
 
 t a b l e c o n s t r u c t o r   : :   =   ' { '   [ l i s t a d e c a m p o s ]   ' } ' 
 
 l i s t a d e c a m p o s   : :   c a m p o   =   { }   f i e l d s e p   c a m p o   [ f i e l d s e p ] 
 
 c a m p o   : :   =   ' [ '   e x p   ` ]   ' '   =   ' e x p   |   N o m b r e '   =   ' e x p   |   e x p 
 
 f i e l d s e p   : :   =   ' , '   |   ' ; ' 
 
 
 
 C a d a   c a m p o   d e   l a   f o r m a   [ e x p 1 ]   =   e x p 2   s e   s u m a   a   l a   n u e v a   t a b l a   d e   u n a   e n t r a d a   c o n   l l a v e   y   e x p 1   e x p 2   v a l o r .   U n   c a m p o   d e   l a   f o r m a 
 
 n o m b r e   =   e x p   e s   e q u i v a l e n t e   a   [ " n o m b r e " ]   =   e x p .   P o r    l t i m o ,   l o s   c a m p o s   d e   l a   f o r m a   e x p   s o n   e q u i v a l e n t e s   a   [ i ]   =   e x p ,   d o n d e   s o n 
 
 c o n s e c u t i v o s   e n t e r o s   n u m  r i c o s ,   c o m e n z a n d o   c o n   1 .   L o s   c a m p o s   e n   l o s   o t r o s   f o r m a t o s   n o   a f e c t a n   a   e s t e   c o n t e o .   P o r   e j e m p l o , 
 
 
 
           a   =   { [ f   ( 1 ) ]   =   g ,   4 5   " x " ,   " Y " ; ;   x   =   1 ,   f   ( x ) ,   [ 3 0 ]   =   2 3 } 
 
 
 
 e s   e q u i v a l e n t e   a 
 
 
 
           h a c e r 
 
               l o c a l   =   t   { } 
 
               t   [ f   ( 1 ) ]   =   g 
 
               t   [ 1 ]   =   " x "   -   1      e x p 
 
               t   [ 2 ]   =   " y "   -   e x p   s e g u n d o 
 
               t . x   =   1   -   t   [ " x " ]   =   1 
 
               t   [ 3 ]   =   f   ( x )   -   e x p   t e r c e r o 
 
               t   [ 3 0 ]   =   2 3 
 
               t   [ 4 ]   =   4 5   -   e x p   c u a r t o 
 
               u n   t   = 
 
           f i n a l 
 
 
 
 S i   e l    l t i m o   c a m p o   e n   l a   l i s t a   t i e n e   l a   f o r m a   e x p   y   l a   e x p r e s i  n   e s   u n a   l l a m a d a   a   u n a   f u n c i  n   o   u n a   e x p r e s i  n   v a r a r g ,   e n t o n c e s   t o d o s 
 
 v a l o r e s   d e v u e l t o s   p o r   e s t a   e x p r e s i  n   e n t r a r   e n   l a   l i s t a   c o n s e c u t i v a m e n t e   ( v  a s e      2 . 5 . 8 ) .   P a r a   e v i t a r   e s t o ,   e n c e r r a r   l a   l l a m a d a   a   l a   f u n c i  n   o 
 
 l a   e x p r e s i  n   v a r a r g   e n t r e   p a r  n t e s i s   ( v  a s e      2 . 5 ) . 
 
 
 
 L a   l i s t a   d e   c a m p o s   p u e d e   t e n e r   u n   s e p a r a d o r   f i n a l   o p c i o n a l ,   c o m o   u n a   c o n v e n i e n c i a   p a r a   l a   m  q u i n a   d e   c  d i g o   g e n e r a d o . 
 
 
 
 2 . 5 . 8   -   L a s   l l a m a d a s   d e   f u n c i  n 
 
 U n a   l l a m a d a   a   l a   f u n c i  n   e n   L u a   t i e n e   l a   s i g u i e n t e   s i n t a x i s : 
 
 
 
 F u n c t i o n C a l l   : :   =   a r g s   p r e f i x e x p 
 
 
 
 E n   u n a   l l a m a d a   a   l a   f u n c i  n ,   e n   p r i m e r   l u g a r   p r e f i x e x p   y   a r g s   s o n   e v a l u a d o s .   S i   e l   v a l o r   d e   p r e f i x e x p   t i e n e   f u n c i  n   t i p o ,   e n t o n c e s   e s t a   f u n c i  n 
 
 s e   l l a m a   c o n   l o s   a r g u m e n t o s   d a d o s .   D e   l o   c o n t r a r i o ,   e l   p r e f i x e x p   " l l a m a d a "   m e t a m  t o d o   s e   l l a m a ,   q u e   t i e n e   c o m o   p r i m e r   p a r  m e t r o   e l 
 
 v a l o r   d e   p r e f i x e x p ,   s e g u i d o   p o r   l o s   a r g u m e n t o s   d e   l l a m a d a   o r i g i n a l   ( v  a s e      2 . 8 ) . 
 
 
 
 L a   f o r m a 
 
 
 
 F u n c t i o n C a l l   : :   =   p r e f i x e x p   ` :   ' a r g s   N o m b r e 
 
 
 
 s e   p u e d e   u t i l i z a r   p a r a   l l a m a r   a   " m  t o d o s " .   U n a   l l a m a d a   v :   n o m b r e   ( a r g s )   e s   a z  c a r   s i n t  c t i c o   p a r a   v . n a m e   ( v ,   a r g s ) ,   e x c e p t o   q u e   v   s  l o   s e   e v a l  a 
 
 u n a   v e z . 
 
 
 
 L o s   a r g u m e n t o s   t i e n e n   l a   s i g u i e n t e   s i n t a x i s : 
 
 
 
 a r g u m e n t o s   : :   =   ' ( '   [ e x p l i s t ]   ` )   ' 
 
 a r g u m e n t o s   : :   =   t a b l e c o n s t r u c t o r 
 
 a r g u m e n t o s   : :   =   c a d e n a 
 
 
 
 T o d a s   l a s   e x p r e s i o n e s   d e   a r g u m e n t o s   s e   e v a l  a n   a n t e s   d e   l a   l l a m a d a .   U n a   l l a m a d a   d e   l a   f o r m a   f   { c a m p o s }   e s   a z  c a r   s i n t  c t i c o   p a r a   f   ( { c a m p o s } ) ; 
 
 e s   d e c i r ,   l a   l i s t a   d e   a r g u m e n t o   e s   u n a   t a b l a   n u e v a   c l a v e .   U n a   l l a m a d a   d e   l a   f ' s t r i n g   f o r m a   ' ( o   f   " c a d e n a "   o   f   [ [ c a d e n a ] ] )   s i n t  c t i c a 
 
 a z  c a r   p a r a   f   ( ' c a d e n a ' ) ,   e s   d e c i r ,   l a   l i s t a   d e   a r g u m e n t o s   e s   u n a   c a d e n a   l i t e r a l    n i c a . 
 
 
 
 C o m o   e x c e p c i  n   a   l a   s i n t a x i s   d e   f o r m a t o   l i b r e   d e   L u a ,   n o   s e   p u e d e   p o n e r   u n   s a l t o   d e   l  n e a   a n t e s   d e   q u e   e l   ' ( '   e n   u n a   l l a m a d a   a   f u n c i  n .   E s t e 
 
 r e s t r i c c i  n   e v i t a   a l g u n a s   a m b i g  e d a d e s   e n   e l   l e n g u a j e .   S i   u s t e d   e s c r i b e 
 
 
 
           u n a   f   = 
 
           ( G ) .   X   ( a ) 
 
 
 
 L u a   q u e   s e   v e a   c o m o   u n a   s o l a   d e c l a r a c i  n ,   u n .   =   F   ( g ) .   X   ( a )   P o r   l o   t a n t o ,   s i   q u i e r e s   d o s   d e c l a r a c i o n e s ,   d e b e   a g r e g a r   u n   p u n t o   y   c o m a   e n t r e 
 
 e l l o s .   S i   r e a l m e n t e   s e   d e s e a   l l a m a r   f ,   d e b e   q u i t a r   e l   s a l t o   d e   l  n e a   a n t e s   d e   ( g ) . 
 
 
 
 U n a   l l a m a d a   d e   l a   f o r m a   r e t u r n   s e   l l a m a   u n a   l l a m a d a   d e   l a   c o l a .   L u a   i m p l e m e n t a   l a s   l l a m a d a s   a d e c u a d a s   c o l a   ( o   r e p e t i c i  n   d e   l a   c o l a   a d e c u a d a ) : 
 
 e n   u n a   l l a m a d a   d e   l a   c o l a ,   l a   f u n c i  n   l l a m a d a   v u e l v e   a   u t i l i z a r   l a   e n t r a d a   d e   l a   p i l a   d e   l a   f u n c i  n   d e   l l a m a d a .   P o r   l o   t a n t o ,   n o   h a y   l  m i t e   e n   e l 
 
 n  m e r o   d e   l a   c o l a   a n i d a d o   l a s   l l a m a d a s   q u e   u n   p r o g r a m a   s e   p u e d e   e j e c u t a r .   S i n   e m b a r g o ,   s e   b o r r a n   d e   l a   c o l a   d e   l l a m a d a s   d e   c u a l q u i e r   i n f o r m a c i  n   d e   d e p u r a c i  n   s o b r e   l a   c o n v o c a t o r i a 
 
 f u n c i  n .   T e n g a   e n   c u e n t a   q u e   u n a   l l a m a d a   d e   c o l a   s  l o   o c u r r e   c o n   u n a   s i n t a x i s   p a r t i c u l a r ,   d o n d e   e l   r e t o r n o   t i e n e   u n a   s o l a   l l a m a d a   d e   f u n c i  n   c o m o 
 
 a r g u m e n t o ,   e s t a   s i n t a x i s   h a c e   q u e   e l   r e t o r n o   d e   l a   f u n c i  n   l l a m a n d o   e x a c t a m e n t e   l o s   r e n d i m i e n t o s   d e   l a   f u n c i  n   l l a m a d a .   A s  ,   n i n g u n o   d e   l o s 
 
 s i g u i e n t e s   e j e m p l o s   s o n   l l a m a d a s   d e   c o l a : 
 
 
 
           r e t u r n   ( f   ( x ) )   -   R e s u l t a d o s   a j u s t a d o   a   1 
 
           r e t o r n o   d e   2   *   f   ( x ) 
 
           r e t u r n   x ,   f   ( x )   -   R e s u l t a d o s   a d i c i o n a l e s 
 
           f   ( x ) ;   r e t o r n o   -   R e s u l t a d o s   d e s c a r t a d o s 
 
           r e t u r n   x      f   ( x )   -   L o s   r e s u l t a d o s   a j u s t a d o s   a   1 
 
 
 
 2 . 5 . 9   -   D e f i n i c i  n   d e   f u n c i o n e s 
 
 L a   s i n t a x i s   p a r a   l a   d e f i n i c i  n   d e   l a   f u n c i  n   e s 
 
 
 
 l a   f u n c i  n   : :   =   f u n c t i o n   f u n c b o d y 
 
 f u n c b o d y   : :   =   ' ( '   [ P A R L I S T ]   ` )   ' b l o q u e   f i n a l 
 
 
 
 E l   a z  c a r   s i n t  c t i c a   s i g u i e n t e   s i m p l i f i c a   l a   d e f i n i c i  n   d e   f u n c i o n e s : 
 
 
 
 e s t a d  s t i c a s   : :   =   f u n c t i o n   f u n c n a m e   f u n c b o d y 
 
 e s t a d  s t i c a s   : :   =   l o c a l   d e   l a   f u n c i  n   f u n c b o d y   N o m b r e 
 
 f u n c n a m e   : :   N o m b r e   =   ` { ' N o m b r e   [ ` . } : '   N o m b r e ] 
 
 
 
 L a   i n s t r u c c i  n 
 
 
 
           f u n c t i o n   f   ( )   C u e r p o   d e l 
 
 
 
 t r a d u c e   a 
 
 
 
           f   =   f u n c t i o n   ( )   C u e r p o   d e l 
 
 
 
 L a   i n s t r u c c i  n 
 
 
 
           f u n c i  n   d e   t . a . b . c . f   ( )   f i n a l   d e l   c u e r p o 
 
 
 
 t r a d u c e   a 
 
 
 
           t . a . b . c . f   =   f u n c t i o n   ( )   C u e r p o   d e l 
 
 
 
 L a   i n s t r u c c i  n 
 
 
 
           f   d e   l a   f u n c i  n   l o c a l   ( )   C u e r p o   d e l 
 
 
 
 t r a d u c e   a 
 
 
 
           f   l o c a l ;   f   =   f u n c t i o n   ( )   C u e r p o   d e l 
 
 
 
 n o   a 
 
 
 
           l o c a l   d e   f   =   f u n c t i o n   ( )   C u e r p o   d e l 
 
 
 
 ( E s t o   s  l o   s e   h a c e   u n a   d i f e r e n c i a   c u a n d o   e l   c u e r p o   d e   l a   f u n c i  n   c o n t i e n e   r e f e r e n c i a s   a   f . ) 
 
 
 
 U n a   d e f i n i c i  n   d e   f u n c i  n   e s   u n a   e x p r e s i  n   e j e c u t a b l e ,   c u y o   v a l o r   t i e n e   e l   t i p o   d e   f u n c i  n .   C u a n d o   L u a   p r e - c o m p i l a   u n a   p a r t e ,   t o d a   s u 
 
 c u e r p o s   d e   l a s   f u n c i o n e s   s o n   p r e - c o m p i l a d o   t a m b i  n .   E n t o n c e s ,   c a d a   v e z   q u e   L u a   e j e c u t a   l a   d e f i n i c i  n   d e   l a   f u n c i  n ,   l a   f u n c i  n   s e   c r e a   u n a   i n s t a n c i a 
 
 ( O   c e r r a d o ) .   E s t a   i n s t a n c i a   d e   l a   f u n c i  n   ( o   c i e r r e )   e s   e l   v a l o r   f i n a l   d e   l a   e x p r e s i  n .   D i f e r e n t e s   i n s t a n c i a s   d e   l a   m i s m a 
 
 f u n c i  n   p u e d e   r e f e r i r s e   a   d i f e r e n t e s   v a r i a b l e s   l o c a l e s   e x t e r n a s   y   p u e d e n   t e n e r   d i f e r e n t e s   t a b l a s   d e   m e d i o   a m b i e n t e . 
 
 
 
 P a r  m e t r o s   d e   a c t u a r   c o m o   v a r i a b l e s   l o c a l e s   q u e   s o n   i n i c i a l i z a d a s   c o n   l o s   v a l o r e s   d e   l o s   a r g u m e n t o s : 
 
 
 
 P A R L I S T   : :   =   l i s t a   d e   n o m b r e s   [ ` ' , `   . . . ' ]   |   ` . . .   ' 
 
 
 
 C u a n d o   u n a   f u n c i  n   e s   l l a m a d a ,   l a   l i s t a   d e   a r g u m e n t o s   s e   a j u s t a   a   l a   l o n g i t u d   d e   l a   l i s t a   d e   p a r  m e t r o s ,   a   m e n o s   q u e   l a   f u n c i  n 
 
 e s   u n a   f u n c i  n   v a r i a d i c   o   v a r a r g ,   q u e   e s t    i n d i c a d o   p o r   t r e s   p u n t o s   ( ' . . . ' )   a l   f i n a l   d e   s u   l i s t a   d e   p a r  m e t r o s .   U n   v a r a r g 
 
 l a   f u n c i  n   n o   s e   a j u s t a   a   s u   l i s t a   d e   a r g u m e n t o s ,   s i n o   q u e   r e c o g e   t o d o s   l o s   a r g u m e n t o s   a d i c i o n a l e s   y   l o s   e n t r e g a   a   l a   f u n c i  n 
 
 a   t r a v  s   d e   u n a   e x p r e s i  n   v a r a r g ,   q u e   t a m b i  n   s e   e s c r i b e   c o m o   t r e s   p u n t o s .   E l   v a l o r   d e   e s t a   e x p r e s i  n   e s   u n a   l i s t a   d e   t o d o s   l o s   r e a l e s 
 
 a r g u m e n t o s   a d i c i o n a l e s ,   s i m i l a r e s   a   u n a   f u n c i  n   c o n   v a r i o s   r e s u l t a d o s .   S i   u n a   e x p r e s i  n   v a r a r g   s e   u t i l i z a   d e n t r o   d e   o t r a   e x p r e s i  n   o 
 
 e n   e l   m e d i o   d e   u n a   l i s t a   d e   l a s   e x p r e s i o n e s ,   e n t o n c e s   s u   l i s t a   d e   r e t o r n o   s e   a j u s t a   a   u n   e l e m e n t o .   S i   l a   e x p r e s i  n   s e   u t i l i z a   c o m o   e l 
 
  l t i m o   e l e m e n t o   d e   u n a   l i s t a   d e   e x p r e s i o n e s ,   e n t o n c e s   n o   s e   r e a l i z a n   a j u s t e s   ( a   m e n o s   q u e   l a    l t i m a   e x p r e s i  n   s e   e n c u e n t r a   e n t r e   p a r  n t e s i s ) . 
 
 
 
 C o m o   e j e m p l o ,   c o n s i d e r e   l a s   s i g u i e n t e s   d e f i n i c i o n e s : 
 
 
 
           f u n c i  n   f   ( a ,   b )   f i n a l 
 
           f u n c i  n   g   ( a ,   b ,   . . . )   f i n a l 
 
           f u n c i  n   r   ( )   d e v u e l v e n   1 , 2 , 3   f i n a l 
 
 
 
 E n t o n c e s ,   t e n e m o s   e l   s i g u i e n t e   m a p e o   d e   l o s   a r g u m e n t o s   a   l o s   p a r  m e t r o s   y   l a   e x p r e s i  n   v a r a r g : 
 
 
 
           L o s   p a r  m e t r o s   d e   l l a m a d a 
 
           
 
           f   ( 3 )   u n   =   3 ,   b   =   c e r o 
 
           f   ( 3 ,   4 )   u n   =   3 ,   b   =   4 
 
           f   ( 3 ,   4 ,   5 )   u n   =   3 ,   b   =   4 
 
           f   ( R   ( ) ,   1 0 )   a   =   1 ,   b   =   1 0 
 
           f   ( R   ( ) )   u n   =   1 ,   b   =   2 
 
           
 
           g   ( 3 )   u n   =   3 ,   b   =   c e r o ,   . . .   - >   ( N a d a ) 
 
           g   ( 3 ,   4 )   u n   =   3 ,   b   =   4 ,   . . .   - >   ( N a d a ) 
 
           g   ( 3 ,   4 ,   5 ,   8 )   a   =   3 ,   b   =   4 ,   . . .   - >   5   8 
 
           g   ( 5 ,   R   ( ) )   a   =   5 ,   b   =   1 ,   . . .   - >   2   3 
 
 
 
 L o s   r e s u l t a d o s   s e   d e v u e l v e n   u t i l i z a n d o   l a   i n s t r u c c i  n   d e   r e t o r n o   ( v e r      2 . 4 . 4 ) .   S i   e l   c o n t r o l   l l e g a   a l   f i n a l   d e   u n a   f u n c i  n   s i n   e n c o n t r a r 
 
 u n a   s e n t e n c i a   r e t u r n ,   l a   f u n c i  n   d e v u e l v e   s i n   n i n g  n   r e s u l t a d o . 
 
 
 
 L a   s i n t a x i s   d e   c o l o n   s e   u t i l i z a   p a r a   d e f i n i r   l o s   m  t o d o s ,   e s   d e c i r ,   l a s   f u n c i o n e s   q u e   t i e n e n   u n   a u t o   i m p l  c i t o   p a r  m e t r o   a d i c i o n a l .   A s  ,   e l 
 
 d e c l a r a c i  n 
 
 
 
           t . a . b . c   f u n c i  n :   f   ( p a r a m s )   e x t r e m o   d e l   c u e r p o 
 
 
 
 e s   a z  c a r   s i n t  c t i c o   p a r a 
 
 
 
           t . a . b . c . f   =   f u n c t i o n   ( s  ,   p a r a m s )   e x t r e m o   d e l   c u e r p o 
 
 
 
 2 . 6   -   R e g l a s   d e   v i s i b i l i d a d 
 
 L u a   e s   u n   l e n g u a j e   d e   a l c a n c e   l  x i c o .   E l   a l c a n c e   d e   l a s   v a r i a b l e s   c o m i e n z a   e n   l a   p r i m e r a   d e c l a r a c i  n   d e s p u  s   d e   s u   d e c l a r a c i  n   y   d u r a 
 
 h a s t a   e l   f i n a l   d e l   b l o q u e   m  s   i n t e r i o r   q u e   i n c l u y e   l a   d e c l a r a c i  n .   C o n s i d e r e m o s   e l   s i g u i e n t e   e j e m p l o : 
 
 
 
           x   =   1 0   -   v a r i a b l e   g l o b a l 
 
           h a c e r   -   n u e v o   b l o q u e 
 
               l o c a l   x   =   x   -   n u e v a   ' x ' ,   c o n   u n   v a l o r   d e   1 0 
 
               p r i n t   ( x )   - >   1 0 
 
               x   =   x   + 1 
 
               h a c e r   -   o t r o   b l o q u e 
 
                   l o c a l   x   =   x   1   -   o t r a   ' x ' 
 
                   p r i n t   ( x )   - >   1 2 
 
               f i n a l 
 
               p r i n t   ( x )   - >   1 1 
 
           f i n a l 
 
           p r i n t   ( x )   - >   1 0   ( e l   m u n d i a l ) 
 
 
 
 T e n g a   e n   c u e n t a   q u e ,   e n   u n a   d e c l a r a c i  n   c o m o   l o c a l   x   =   x ,   x   l o s   n u e v o s   q u e   s e   d e c l a r a r o n   n o   e s t    e n   e l    m b i t o ,   s i n   e m b a r g o ,   p o r   l o   q u e   e l   s e g u n d o   s e   r e f i e r e   a   x 
 
 l a   v a r i a b l e   e x t e r n a . 
 
 
 
 D e b i d o   a   l a s   r e g l a s   d e    m b i t o   l  x i c o ,   l a s   v a r i a b l e s   l o c a l e s   p u e d e   s e r   v i s i t a d o   l i b r e m e n t e   p o r   l a s   f u n c i o n e s   d e f i n i d a s   d e n t r o   d e   s u    m b i t o   d e   a p l i c a c i  n .   A 
 
 v a r i a b l e   l o c a l   u t i l i z a d o   p o r   u n a   f u n c i  n   i n t e r n a   r e c i b e   e l   n o m b r e   d e   r e v a l u a r ,   o   u n a   v a r i a b l e   l o c a l   e x t e r n a ,   d e n t r o   d e   l a   f u n c i  n   i n t e r n a . 
 
 
 
 O b s e r v e   q u e   c a d a   e j e c u c i  n   d e   u n a   s e n t e n c i a   l o c a l   d e f i n e   n u e v a s   v a r i a b l e s   l o c a l e s .   C o n s i d e r e m o s   e l   s i g u i e n t e   e j e m p l o : 
 
 
 
           a   =   { } 
 
           l o c a l   x   =   2 0 
 
           p a r a   i   =   1 , 1 0   l o 
 
               l o c a l ,   y   =   0 
 
               a   [ i ]   =   f u n c t i o n   ( )   y   =   y   + 1 ;   r e t u r n   x   +   y   f i n a l e s 
 
           f i n a l 
 
 
 
 E l   l a z o   c r e a   d i e z   c i e r r e s   ( e s   d e c i r ,   d i e z   c a s o s   d e   l a   f u n c i  n   a n  n i m a ) .   C a d a   u n o   d e   e s t o s   c i e r r e s   u t i l i z a   u n a   d i f e r e n t e 
 
 v a r i a b l e   y ,   m i e n t r a s   q u e   t o d o s   e l l o s   c o m p a r t e n   e l   m i s m o   x . 
 
 
 
 2 . 7   -   M a n e j o   d e   e r r o r e s 
 
 D e b i d o   a   q u e   L u a   e s   u n   l e n g u a j e   d e   e x t e n s i  n   i n t e g r a d o ,   t o d a s   l a s   a c c i o n e s   d e   L u a   p a r t i r   d e   c  d i g o   C   e n   e l   p r o g r a m a   d e   a c o g i d a   l l a m a r   a   u n a   f u n c i  n 
 
 d e   l a   b i b l i o t e c a   d e   L u a   ( v e r   l u a _ p c a l l ) .   C u a n d o   s e   p r o d u c e   u n   e r r o r   d u r a n t e   l a   c o m p i l a c i  n   o   l a   e j e c u c i  n   d e   L u a ,   e l   c o n t r o l   v u e l v e   a   C , 
 
 q u e   p u e d e n   t o m a r   l a s   m e d i d a s   a p r o p i a d a s   ( p o r   e j e m p l o ,   i m p r i m i r   u n   m e n s a j e   d e   e r r o r ) . 
 
 
 
 L u a   c  d i g o   d e   f o r m a   e x p l  c i t a   p u e d e   g e n e r a r   u n   e r r o r   l l a m a n d o   a   l a   f u n c i  n   d e   e r r o r .   S i   u s t e d   n e c e s i t a   p a r a   c a p t u r a r   e r r o r e s   e n   L u a ,   p u e d e   u t i l i z a r 
 
 l a   f u n c i  n   p c a l l . 
 
 
 
 2 . 8   -   M e t a T a b l e s 
 
 C a d a   v a l o r   e n   L u a   p u e d e   t e n e r   u n   m e t a t a b l a .   E s t a   e s   u n a   m e t a t a b l a   o r d i n a r i a   t a b l a   L u a   q u e   d e f i n e   e l   c o m p o r t a m i e n t o   d e l   o r i g i n a l 
 
 v a l o r   b a j o   d e t e r m i n a d a s   o p e r a c i o n e s   e s p e c i a l e s .   P u e d e   c a m b i a r   v a r i o s   a s p e c t o s   d e l   c o m p o r t a m i e n t o   d e   l a s   o p e r a c i o n e s   s o b r e   u n   v a l o r   m e d i a n t e   e l   e s t a b l e c i m i e n t o   d e 
 
 c a m p o s   e s p e c  f i c o s   d e   s u   m e t a t a b l a .   P o r   e j e m p l o ,   c u a n d o   u n   v a l o r   n o   n u m  r i c o   e s   e l   o p e r a n d o   d e   u n a   a d i c i  n ,   L u a   c o m p r u e b a   s i   h a y   u n 
 
 f u n c i  n   e n   e l   c a m p o   " _ _ a d d "   e n   s u   m e t a t a b l a .   S i   e n c u e n t r a   u n o ,   L u a   l l a m a   a   e s t a   f u n c i  n   p a r a   r e a l i z a r   l a   s u m a . 
 
 
 
 L l a m a m o s   a   l a s   c l a v e s   d e   u n a   s e r i e   d e   e v e n t o s   y   l o s   M e t a T a b l e   m e t a m e t h o d s   v a l o r e s .   E n   e l   e j e m p l o   a n t e r i o r ,   e l   e v e n t o   e s   " a  a d i r "   y   e l 
 
 m e t a m  t o d o   e s   l a   f u n c i  n   q u e   r e a l i z a   l a   a d i c i  n . 
 
 
 
 P u e d e   c o n s u l t a r   l a   m e t a t a b l a   d e   c u a l q u i e r   v a l o r   a   t r a v  s   d e   l a   f u n c i  n   g e t m e t a t a b l e . 
 
 
 
 P u e d e   r e e m p l a z a r   l a   m e t a t a b l a   d e   t a b l a s   a   t r a v  s   d e   l a   f u n c i  n   s e t m e t a t a b l e .   N o   s e   p u e d e   c a m b i a r   l a   m e t a t a b l a   d e   o t r o s   t i p o s 
 
 d e   L u a   ( e x c e p t o   m e d i a n t e   e l   u s o   d e   l a   b i b l i o t e c a   d e   d e p u r a c i  n ) ,   d e b e   u t i l i z a r   l a   A P I   d e   C   p a r a   e s o . 
 
 
 
 L a s   t a b l a s   y   u s e r d a t a   c o m p l e t o   t i e n e n   M e t a T a b l e s   i n d i v i d u a l e s   ( a u n q u e   v a r i a s   t a b l a s   y   u s e r d a t a   p u e d e n   c o m p a r t i r   s u s   M e t a T a b l e s ) . 
 
 L o s   v a l o r e s   d e   t o d o s   l o s   d e m  s   t i p o s   c o m p a r t i r   u n a   s o l a   m e t a t a b l a   p o r   t i p o ,   e s   d e c i r ,   h a y   u n a   m e t a t a b l a    n i c o   p a r a   t o d o s   l o s   n  m e r o s ,   u n a 
 
 p a r a   t o d a s   l a s   c a d e n a s ,   e t c 
 
 
 
 A   l o s   c o n t r o l e s   M e t a T a b l e   c  m o   u n   o b j e t o   s e   c o m p o r t a   e n   l a s   o p e r a c i o n e s   a r i t m  t i c a s ,   c o m p a r a c i o n e s   d e   o r d e n ,   d e   c o n c a t e n a c i  n ,   e l   f u n c i o n a m i e n t o   l a r g o , 
 
 y   l a   i n d e x a c i  n .   U n   m e t a t a b l a   T a m b i  n   p u e d e   d e f i n i r   u n a   f u n c i  n   q u e   s e   l l a m a   c u a n d o   u n   u s e r d a t a   e s   r e c o l e c t o r   d e   b a s u r a .   P a r a   c a d a   u n o   d e   e s t o s 
 
 l a s   o p e r a c i o n e s   d e   l o s   a s o c i a d o s   L u a   u n a   c l a v e   e s p e c  f i c a   d e n o m i n a d o   e v e n t o .   C u a n d o   L u a   r e a l i z a   u n a   d e   e s t a s   o p e r a c i o n e s   s o b r e   u n   v a l o r ,   s e   c o m p r u e b a 
 
 s i   e s t e   v a l o r   t i e n e   u n a   m e t a t a b l a   c o n   e l   e v e n t o   c o r r e s p o n d i e n t e .   S i   e s   a s  ,   e l   v a l o r   a s o c i a d o   c o n   e s a   c l a v e   ( e l   m e t a m  t o d o ) 
 
 c o n t r o l a   l a   f o r m a   e n   L u a   l l e v a r    a   c a b o   l a   o p e r a c i  n . 
 
 
 
 M e t a T a b l e s   c o n t r o l   d e   l a s   o p e r a c i o n e s   l i s t a d a s   a   c o n t i n u a c i  n .   C a d a   o p e r a c i  n   s e   i d e n t i f i c a   p o r   s u   n o m b r e   c o r r e s p o n d i e n t e .   L a   c l a v e   p a r a   c a d a 
 
 l a   o p e r a c i  n   e s   u n a   c a d e n a   c o n   s u   n o m b r e   p r e c e d i d o   p o r   d o s   g u i o n e s ,   ' _ _ ' ,   p o r   e j e m p l o ,   l a   c l a v e   p a r a   l a   o p e r a c i  n   " a d d "   e s   e l 
 
 c a d e n a   " _ _ a d d " .   L a   s e m  n t i c a   d e   e s t a s   o p e r a c i o n e s   s e   e x p l i c a   m e j o r   p o r   u n a   f u n c i  n   L u a   q u e   d e s c r i b e   c  m o   e l   i n t  r p r e t e 
 
 e j e c u t a   l a   o p e r a c i  n . 
 
 
 
 E l   c  d i g o   q u e   s e   m u e s t r a   a q u    e n   L u a   e s   s  l o   i l u s t r a t i v a ,   e l   c o m p o r t a m i e n t o   r e a l   e s t    c o d i f i c a d o   e n   e l   i n t  r p r e t e   y   q u e   e s   m u c h o   m  s 
 
 e f i c i e n t e   q u e   e s t a   s i m u l a c i  n .   T o d a s   l a s   f u n c i o n e s   q u e   s e   u t i l i z a n   e n   e s t a s   d e s c r i p c i o n e s   ( r a w g e t ,   t o n u m b e r ,   e t c )   s e   d e s c r i b e n   e n      5 . 1 .   E n 
 
 e n   p a r t i c u l a r ,   p a r a   r e c u p e r a r   e l   m e t a m  t o d o   d e   u n   o b j e t o   d a d o ,   u t i l i z a m o s   l a   e x p r e s i  n 
 
 
 
           m e t a t a b l a   ( o b j )   [ e v e n t o ] 
 
 
 
 E s t o   d e b e   s e r   l e  d o   c o m o 
 
 
 
           r a w g e t   ( g e t m e t a t a b l e   ( o b j )   o   { } ,   e l   e v e n t o ) 
 
 
 
 E s t o   e s ,   e l   a c c e s o   a   u n a   m e t a m  t o d o   n o   i n v o c a   m e t a m e t h o d s   o t r o s ,   y   h a c e   e l   a c c e s o   a   l o s   o b j e t o s   s i n   M e t a T a b l e s 
 
 n o   f a l l a n   ( q u e   s i m p l e m e n t e   s e   t r a d u c e   e n   c e r o ) . 
 
 
 
 " A  a d i r " :   l a   o p e r a c i  n   + . 
 
 L a   f u n c i  n   g e t b i n h a n d l e r   a   c o n t i n u a c i  n   d e f i n e   c  m o   L u a   e l i g e   u n   c o n t r o l a d o r   p a r a   u n a   o p e r a c i  n   b i n a r i a .   E n   p r i m e r   l u g a r ,   L u a   t r a t a   d e   l a   p r i m e r a 
 
 o p e r a n d o .   S i   e l   t i p o   n o   d e f i n e   u n   c o n t r o l a d o r   p a r a   l a   o p e r a c i  n ,   e n t o n c e s   L u a   t r a t a   d e l   s e g u n d o   o p e r a n d o . 
 
 
 
           f u n c i  n   d e   g e t b i n h a n d l e r   ( o p 1 ,   o p 2 ,   e v e n t o ) 
 
               v o l v e r   m e t a t a b l a   ( o p 1 )   [ e v e n t o ]   o   m e t a t a b l a   ( o p 2 )   [ e v e n t o ] 
 
           f i n a l 
 
 
 
 M e d i a n t e   e l   u s o   d e   e s t a   f u n c i  n ,   e l   c o m p o r t a m i e n t o   d e   l a   o p 1   +   o p 2   e s 
 
 
 
           f u n c i  n   d e   a d d _ e v e n t   ( o p 1 ,   o p 2 ) 
 
               l o c a l ,   O 1 ,   O 2   =   t o n u m b e r   ( o p 1 ) ,   t o n u m b e r   ( o p 2 ) 
 
               S i   O 1   y   O 2   a   c o n t i n u a c i  n   -   a m b o s   o p e r a n d o s   s o n   n u m  r i c o s ? 
 
                   v o l v e r   o 1   +   o 2   -   ' + '   a q u    e s   l a   p r i m i t i v a   d e   ' A g r e g a r ' 
 
               o t r a   c o s a   -   a l   m e n o s   u n o   d e   l o s   o p e r a n d o s   n o   e s   n u m  r i c o 
 
                   l o c a l   h   =   g e t b i n h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ a d d " ) 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       -   L l a m a r   a l   c o n t r o l a d o r   c o n   d o s   o p e r a n d o s 
 
                       r e t u r n   ( h   ( o p 1 ,   o p 2 ) ) 
 
                   o t r a   c o s a   -   n o   h a y   n i n g  n   c o n t r o l a d o r   d i s p o n i b l e :   c o m p o r t a m i e n t o   p o r   d e f e c t o 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 " S u b " :   l a   -   o p e r a c i  n .   C o m p o r t a m i e n t o   s i m i l a r   a   l a   o p e r a c i  n   " a d d " . 
 
 " M u l " :   l a   o p e r a c i  n   * .   C o m p o r t a m i e n t o   s i m i l a r   a   l a   o p e r a c i  n   " a d d " . 
 
 " D i v " :   l a   o p e r a c i  n   / .   C o m p o r t a m i e n t o   s i m i l a r   a   l a   o p e r a c i  n   " a d d " . 
 
 " M o d " :   l a   o p e r a c i  n % .   C o m p o r t a m i e n t o   s i m i l a r   a   l a   o p e r a c i  n   " a d d " ,   c o n   l a   o p e r a c i  n   o 1   -   f l o o r   ( o 1 / o 2 )   *   o 2   c o m o   l a   p r i m i t i v a 
 
 o p e r a c i  n . 
 
 " P r i s i o n e r o   d e   g u e r r a " :   e l   ^   ( e x p o n e n c i a c i  n ) .   C o m p o r t a m i e n t o   s i m i l a r   a   l a   o p e r a c i  n   " a d d " ,   c o n   l a   f u n c i  n   p o w   ( a   p a r t i r   d e   l o s   c  l c u l o s   C 
 
 b i b l i o t e c a )   c o m o   o p e r a c i  n   p r i m i t i v a . 
 
 " U N M " :   e l   o p e r a d o r   u n a r i o   -   o p e r a c i  n . 
 
           f u n c i  n   d e   u n m _ e v e n t   ( o p ) 
 
               l o c a l e s   o   =   t o n u m b e r   ( o p ) 
 
               s i   o   c o n t i n u a c i  n   -   o p e r a n d o   e s   n u m  r i c o ? 
 
                   r e t o r n o - o   -   ' - '   a q u    e s t    e l   p r i m i t i v o   " u n m   ' 
 
               o t r a   c o s a   -   e l   o p e r a n d o   n o   e s   n u m  r i c o . 
 
                   -   T r a t e   d e   o b t e n e r   u n   c o n t r o l a d o r   d e l   o p e r a n d o 
 
                   l o c a l   h   =   m e t a t a b l e   ( o p ) .   _ _ u n m 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       -   L l a m a r   a l   m a n e j a d o r   c o n   e l   o p e r a n d o 
 
                       r e t u r n   ( h   ( o p ) ) 
 
                   o t r a   c o s a   -   n o   h a y   n i n g  n   c o n t r o l a d o r   d i s p o n i b l e :   c o m p o r t a m i e n t o   p o r   d e f e c t o 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 " C o n c a t " :   e l   . .   ( C o n c a t e n a c i  n )   l a   o p e r a c i  n . 
 
           f u n c i  n   d e   c o n c a t _ e v e n t   ( o p 1 ,   o p 2 ) 
 
               i f   ( t i p o   ( o p 1 )   = =   " c a d e n a "   o   t i p o   ( o p 1 )   = =   " n  m e r o " )   y 
 
                     ( T i p o   ( o p 2 )   = =   " c a d e n a "   o   t i p o   ( o p 2 )   = =   " n u m b e r " ) ,   e n t o n c e s 
 
                   o p 1   v o l v e r   . .   o p 2   -   c o n c a t e n a c i  n   d e   c a d e n a s   p r i m i t i v a 
 
               m  s 
 
                   l o c a l   h   =   g e t b i n h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ c o n c a t " ) 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       r e t u r n   ( h   ( o p 1 ,   o p 2 ) ) 
 
                   m  s 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 " L e n " :   l a   o p e r a c i  n   # . 
 
           f u n c i  n   d e   l e n _ e v e n t   ( o p ) 
 
               s i   e l   t i p o   ( o p )   = =   " s t r i n g "   y   l u e g o 
 
                   v o l v e r   s t r l e n   ( o p )   -   l o n g i t u d   d e   l a   c a d e n a   p r i m i t i v a 
 
               e l s e i f   t i p o   ( o p )   = =   " m e s a " ,   e n t o n c e s 
 
                   d e v o l v e r    #   o p   -   l o n g i t u d   d e   l a   t a b l a   p r i m i t i v a 
 
               m  s 
 
                   l o c a l   h   =   m e t a t a b l e   ( o p ) .   _ _ l e n 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       -   L l a m a r   a l   m a n e j a d o r   c o n   e l   o p e r a n d o 
 
                       r e t u r n   ( h   ( o p ) ) 
 
                   o t r a   c o s a   -   n o   h a y   n i n g  n   c o n t r o l a d o r   d i s p o n i b l e :   c o m p o r t a m i e n t o   p o r   d e f e c t o 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 V  a s e      2 . 5 . 5   p a r a   u n a   d e s c r i p c i  n   d e   l a   l o n g i t u d   d e   u n a   m e s a . 
 
 
 
 " E Q " :   l a   o p e r a c i  n .   = =   E l   g e t c o m p h a n d l e r   f u n c i  n   d e f i n e   l a   f o r m a   e n   L u a   e l i g e   u n   m e t a m  t o d o   p a r a   l o s   o p e r a d o r e s   d e   c o m p a r a c i  n .   A 
 
 m e t a m  t o d o   s  l o   s e   s e l e c c i o n a   c u a n d o   a m b o s   o b j e t o s   q u e   s e   c o m p a r a n   t i e n e n   e l   m i s m o   t i p o   y   l a   m e t a m  t o d o   m i s m o   p a r a   e l   s e l e c c i o n a d o 
 
 o p e r a c i  n . 
 
           f u n c i  n   d e   g e t c o m p h a n d l e r   ( o p 1 ,   o p 2 ,   e v e n t o ) 
 
               s i   e l   t i p o   ( o p 1 )   ~   T i p o   =   ( o p 2 )   a   c o n t i n u a c i  n ,   v o l v e r   e n d   n i l 
 
               l o c a l e s   m m 1   =   m e t a t a b l a   ( o p 1 )   [ e v e n t o ] 
 
               l o c a l e s   m m 2   =   m e t a t a b l a   ( o p 2 )   [ e v e n t o ] 
 
               s i   = =   m m 1   m m 2   l u e g o   r e g r e s a r   m m 1   e l s e   r e t u r n   e n d   n i l 
 
           f i n a l 
 
 
 
 E l   " e q "   e v e n t o   s e   d e f i n e   c o m o   s i g u e : 
 
 
 
           f u n c i  n   d e   e q _ e v e n t   ( o p 1 ,   o p 2 ) 
 
               s i   e l   t i p o   ( o p 1 )   ~   T i p o   =   ( o p 2 ) ,   e n t o n c e s   -   l o s   d i f e r e n t e s   t i p o s ? 
 
                   r e t u r n   f a l s e   -   d i f e r e n t e s   o b j e t o s 
 
               f i n a l 
 
               s i   o p 1   = =   o p 2   e n t o n c e s   -   p r i m i t i v a   i g u a l e s ? 
 
                   r e t u r n   t r u e   -   l o s   o b j e t o s   s o n   i g u a l e s 
 
               f i n a l 
 
               -   T r a t a r   m e t a m  t o d o 
 
               l o c a l   h   =   g e t c o m p h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ e q " ) 
 
               s i   h   a   c o n t i n u a c i  n 
 
                   r e t u r n   ( h   ( o p 1 ,   o p 2 ) ) 
 
               m  s 
 
                   r e t u r n   f a l s e 
 
               f i n a l 
 
           f i n a l 
 
 
 
 u n   ~   =   b   e s   e q u i v a l e n t e   a   n o   ( a   = =   b ) . 
 
 
 
 " L T " :   l a   o p e r a c i  n   < . 
 
           f u n c i  n   d e   l t _ e v e n t   ( o p 1 ,   o p 2 ) 
 
               s i   e l   t i p o   ( o p 1 )   = =   " n  m e r o "   y   e l   t i p o   ( o p 2 )   = =   " n  m e r o "   a   c o n t i n u a c i  n 
 
                   v o l v e r   o p 1   < o p 2   -   c o m p a r a c i  n   n u m  r i c a 
 
               e l s e i f   t i p o   ( o p 1 )   = =   " c a d e n a "   y   e l   t i p o   ( o p 2 )   = =   " s t r i n g "   y   l u e g o 
 
                   v o l v e r   o p 1   < o p 2   -   c o m p a r a c i  n   l e x i c o g r  f i c a 
 
               m  s 
 
                   l o c a l   h   =   g e t c o m p h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ l t " ) 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       r e t u r n   ( h   ( o p 1 ,   o p 2 ) ) 
 
                   m  s 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 a >   b   e s   e q u i v a l e n t e   a   b   < a . 
 
 
 
 " L e " :   l a   o p e r a c i  n   < = . 
 
           f u n c i  n   d e   l e _ e v e n t   ( o p 1 ,   o p 2 ) 
 
               s i   e l   t i p o   ( o p 1 )   = =   " n  m e r o "   y   e l   t i p o   ( o p 2 )   = =   " n  m e r o "   a   c o n t i n u a c i  n 
 
                   v o l v e r   o p 1   < =   o p 2   -   c o m p a r a c i  n   n u m  r i c a 
 
               e l s e i f   t i p o   ( o p 1 )   = =   " c a d e n a "   y   e l   t i p o   ( o p 2 )   = =   " s t r i n g "   y   l u e g o 
 
                   v o l v e r   o p 1   < =   o p 2   -   c o m p a r a c i  n   l e x i c o g r  f i c a 
 
               m  s 
 
                   l o c a l   h   =   g e t c o m p h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ l e " ) 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       r e t u r n   ( h   ( o p 1 ,   o p 2 ) ) 
 
                   m  s 
 
                       h   =   g e t c o m p h a n d l e r   ( o p 1 ,   o p 2 ,   " _ _ l t " ) 
 
                       s i   h   a   c o n t i n u a c i  n 
 
                           n o   r e g r e s a r   h   ( o p 2 ,   o p 1 ) 
 
                       m  s 
 
                           e r r o r   (        ) 
 
                       f i n a l 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 u n >   =   b   e s   e q u i v a l e n t e   a   b   < =   a .   T e n g a   e n   c u e n t a   q u e ,   e n   a u s e n c i a   d e   u n   " l e "   m e t a m  t o d o ,   L u a   t r a t a   d e   l a   " l " ,   e n   e l   s u p u e s t o   d e   q u e   a   < =   b   e s 
 
 e q u i v a l e n t e   a   n o   ( b   < a ) . 
 
 
 
 "  n d i c e " :   L a   m e s a   d e   a c c e s o   a   l a   i n d e x a c i  n   [ c l a v e ] . 
 
           f u n c i  n   d e   g e t t a b l e _ e v e n t   ( t a b l a ,   c l a v e ) 
 
               L o c a l   H 
 
               s i   e l   t i p o   ( t a b l a )   = =   " m e s a " ,   e n t o n c e s 
 
                   v   =   r a w g e t   l o c a l e s   ( t a b l a ,   c l a v e ) 
 
                   s i   v   ~   =   n i l   e n t o n c e s   d e v o l v e r   l o s   v 
 
                   h   =   m e t a t a b l a   ( t a b l a ) .   _ _ i n d e x 
 
                   s i   h   = =   n i l   e n t o n c e s   d e v o l v e r   l o s   n u l a 
 
               m  s 
 
                   h   =   m e t a t a b l a   ( t a b l a ) .   _ _ i n d e x 
 
                   s i   h   = =   n i l   e n t o n c e s 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
               s i   e l   t i p o   d e   ( h )   = =   " f u n c i  n "   a   c o n t i n u a c i  n 
 
                   r e t u r n   ( h   ( t a b l a ,   c l a v e ) )   -   l l a m a r   a l   c o n t r o l a d o r 
 
               e l s e   r e t u r n   h   [ c l a v e ]   -   o   r e p e t i r   l a   o p e r a c i  n   e n   l a   q u e 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 " N e w I n d e x " :   L a   t a b l a   d e   a s i g n a c i  n   d e   i n d e x a c i  n   [ c l a v e ]   =   v a l o r . 
 
           f u n c i  n   s e t t a b l e _ e v e n t   ( t a b l a ,   c l a v e ,   v a l o r ) 
 
               L o c a l   H 
 
               s i   e l   t i p o   ( t a b l a )   = =   " m e s a " ,   e n t o n c e s 
 
                   v   =   r a w g e t   l o c a l e s   ( t a b l a ,   c l a v e ) 
 
                   s i   v   ~   =   n i l   e n t o n c e s   r a w s e t   ( t a b l a ,   c l a v e ,   v a l o r ) ;   r e t u r n   e n d 
 
                   h   =   m e t a t a b l a   ( t a b l a ) .   _ _ n e w i n d e x 
 
                   s i   h   = =   n i l   e n t o n c e s   r a w s e t   ( t a b l a ,   c l a v e ,   v a l o r ) ;   r e t u r n   e n d 
 
               m  s 
 
                   h   =   m e t a t a b l a   ( t a b l a ) .   _ _ n e w i n d e x 
 
                   s i   h   = =   n i l   e n t o n c e s 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
               s i   e l   t i p o   d e   ( h )   = =   " f u n c i  n "   a   c o n t i n u a c i  n 
 
                   h   ( t a b l a ,   c l a v e ,   v a l o r )   -   l l a m a r   a l   c o n t r o l a d o r 
 
               o t r a   c o s a   h   [ c l a v e ]   =   v a l o r   -   o   r e p e t i r   l a   o p e r a c i  n   e n   l a   q u e 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 " C a l l " :   l l a m a d o   c u a n d o   L u a   l l a m a   a   u n   v a l o r . 
 
           f u n c t i o n _ e v e n t   f u n c i  n   ( f u n c i  n ,   . . . ) 
 
               s i   e l   t i p o   ( f u n c )   = =   " f u n c i  n "   a   c o n t i n u a c i  n 
 
                   v o l v e r   f u n c i o n e s   ( . . . )   -   l l a m a d a   p r i m i t i v a 
 
               m  s 
 
                   l o c a l   h   =   m e t a t a b l a   ( f u n c ) .   _ _ c a l l 
 
                   s i   h   a   c o n t i n u a c i  n 
 
                       r e t u r n   h   ( f u n c i o n e s ,   . . . ) 
 
                   m  s 
 
                       e r r o r   (        ) 
 
                   f i n a l 
 
               f i n a l 
 
           f i n a l 
 
 
 
 
 
 2 . 9   -   E n t o r n o s 
 
 A d e m  s   M e t a T a b l e s ,   l o s   o b j e t o s   d e   l o s   t i p o s   d e   h i l o ,   d e   l a   f u n c i  n ,   y   u s e r d a t a   t i e n e n   o t r a   t a b l a   a s o c i a d a   c o n   e l l o s ,   l l a m a r o n   a   s u 
 
 m e d i o   a m b i e n t e .   A l   i g u a l   q u e   M e t a T a b l e s ,   l o s   a m b i e n t e s   s o n   l a s   t a b l a s   p e r i  d i c a s   y   v a r i o s   o b j e t o s   p u e d e n   c o m p a r t i r   e l   m i s m o   e n t o r n o . 
 
 
 
 L o s   h i l o s   s e   c r e    c o m p a r t i r   e l   m e d i o   d e   l a   c r e a c i  n   d e   h i l o .   F u n c i o n e s   U s e r d a t a   y   C   s o n   c r e a d o s   c o m p a r t i e n d o   e l 
 
 e n t o r n o   d e   l a   f u n c i  n   C   c r e a n d o .   N o   a n i d a d o s   f u n c i o n e s   L u a   ( c r e a d o   p o r   l o a d f i l e ,   L o a d S t r i n g   o   c a r g a )   s e   c r e a n 
 
 c o m p a r t i r   e l   m e d i o   d e   l a   c r e a c i  n   d e   h i l o .   A n i d a d a s   f u n c i o n e s   L u a   s e   c r e a n   c o m p a r t i r   e l   m e d i o   d e   l a   c r e a c i  n 
 
 L u a   f u n c i  n . 
 
 
 
 E n t o r n o s   a s o c i a d o s   c o n   d a t o s   d e   u s u a r i o   n o   t i e n e n   n i n g  n   s i g n i f i c a d o   p a r a   L u a .   E s   s  l o   u n a   c a r a c t e r  s t i c a   d e   c o n v e n i e n c i a   p a r a   l o s   p r o g r a m a d o r e s   a 
 
 a s o c i a r   u n a   t a b l a   a   u n   u s e r d a t a . 
 
 
 
 E n t o r n o s   a s o c i a d o s   c o n   t e m a s   s o n   l l a m a d o s   e n t o r n o s   g l o b a l e s .   S e   u t i l i z a n   c o m o   e l   e n t o r n o   p r e d e t e r m i n a d o   p a r a   h i l o s 
 
 y   n o   a n i d a d a s   f u n c i o n e s   L u a   c r e a d o   p o r   e l   h i l o   y   s e   p u e d e   a c c e d e r   d i r e c t a m e n t e   p o r   e l   c  d i g o   C   ( v  a s e      3 . 3 ) . 
 
 
 
 E l   m e d i o   a m b i e n t e   a s o c i a d o s   c o n   u n a   f u n c i  n   d e   C   s e   p u e d e   a c c e d e r   d i r e c t a m e n t e   p o r   e l   c  d i g o   C   ( v  a s e      3 . 3 ) .   S e   u t i l i z a   c o m o   v a l o r   p r e d e t e r m i n a d o 
 
 e n t o r n o   p a r a   o t r a s   f u n c i o n e s   C   y   u s e r d a t a   c r e a d o s   p o r   l a   f u n c i  n . 
 
 
 
 E n t o r n o s   a s o c i a d o s   c o n   l a s   f u n c i o n e s   L U A   s e   u t i l i z a n   p a r a   r e s o l v e r   t o d o s   l o s   a c c e s o s   a   l a s   v a r i a b l e s   g l o b a l e s   d e n t r o   d e   l a   f u n c i  n 
 
 ( V  a s e      2 . 3 ) .   S e   u t i l i z a n   c o m o   e l   e n t o r n o   p r e d e t e r m i n a d o   p a r a   a n i d a d o s   f u n c i o n e s   L u a   c r e a d a s   p o r   l a   f u n c i  n . 
 
 
 
 U s t e d   p u e d e   c a m b i a r   e l   e n t o r n o   d e   u n a   f u n c i  n   L u a   o   e l   h i l o   c o n d u c t o r   l l a m a n d o   s e t f e n v .   U s t e d   p u e d e   o b t e n e r   e l   e n t o r n o   d e   u n a 
 
 L u a   f u n c i  n   o   e l   h i l o   l l a m a n d o   g e t f e n v .   P a r a   m a n i p u l a r   e l   m e d i o   a m b i e n t e   d e   o t r o s   o b j e t o s   ( u s e r d a t a , 
 
 F u n c i o n e s   d e   C ,   l o s   o t r o s )   d e b e   u t i l i z a r   l a   A P I   d e   C . 
 
 
 
 2 . 1 0   -   R e c o l e c c i  n   d e   B a s u r a 
 
 L u a   r e a l i z a   l a   g e s t i  n   d e   m e m o r i a   a u t o m  t i c a .   E s t o   s i g n i f i c a   q u e   u s t e d   n o   t i e n e   q u e   p r e o c u p a r s e   a c e r c a   d e   l a   m e m o r i a   a   a s i g n a r   a   l o s   n u e v o s   o b j e t o s 
 
 n i   d e   l i b e r a r l o   c u a n d o   l o s   o b j e t o s   y a   n o   s o n   n e c e s a r i o s .   L u a   a d m i n i s t r a   l a   m e m o r i a   d e   f o r m a   a u t o m  t i c a   m e d i a n t e   l a   e j e c u c i  n   d e   u n   r e c o l e c t o r   d e   b a s u r a 
 
 d e   v e z   e n   c u a n d o   p a r a   r e c o g e r   t o d o s   l o s   o b j e t o s   m u e r t o s   ( e s   d e c i r ,   o b j e t o s   q u e   y a   n o   s o n   a c c e s i b l e s   d e s d e   L u a ) .   T o d a   l a   m e m o r i a   u s a d a   p o r 
 
 L u a   e s t    s u j e t o   a   l a   g e s t i  n   a u t o m  t i c a :   t a b l a s ,   u s e r d a t a ,   f u n c i o n e s ,   h i l o s ,   c u e r d a s ,   e t c 
 
 
 
 L u a   i m p l e m e n t a   u n   i n c r e m e n t o   m a r c a d o   y   b a r r i d o   d e l   c o l e c t o r .   U t i l i z a   d o s   n  m e r o s   p a r a   e l   c o n t r o l   d e   s u s   c i c l o s   d e   r e c o l e c c i  n   d e   b a s u r a :   e l 
 
 r e c o l e c t o r   d e   b a s u r a   d e   p a u s a   y   e l   m u l t i p l i c a d o r   d e   p a s o   r e c o l e c t o r   d e   b a s u r a .   A m b o s   p u n t o s   p o r c e n t u a l e s   u s o   c o m o   u n i d a d e s   ( d e   m o d o   q u e   u n   v a l o r   d e 
 
 1 0 0   s i g n i f i c a   u n   v a l o r   i n t e r n o   d e   1 ) . 
 
 
 
 L a   p a u s a   r e c o l e c t o r   d e   b a s u r a   c o n t r o l a   e l   t i e m p o   q u e   e l   c o l e c t o r   d e   e s p e r a   a n t e s   d e   i n i c i a r   u n   n u e v o   c i c l o .   L o s   v a l o r e s   m  s   a l t o s   q u e   e l 
 
 c o l e c t o r   m e n o s   a g r e s i v o .   L o s   v a l o r e s   i n f e r i o r e s   a   1 0 0   s i g n i f i c a   q u e   e l   c o l e c t o r   n o   v a   a   e s p e r a r   p a r a   i n i c i a r   u n   n u e v o   c i c l o .   U n   v a l o r   d e   2 0 0 
 
 s i g n i f i c a   q u e   e l   r e c o l e c t o r   d e   e s p e r a   a   q u e   l a   m e m o r i a   t o t a l   e n   e l   u s o   d e   d u p l i c a r   a n t e s   d e   c o m e n z a r   u n   n u e v o   c i c l o . 
 
 
 
 E l   m u l t i p l i c a d o r   d e   p a s o   c o n t r o l a   l a   v e l o c i d a d   r e l a t i v a   d e l   c o l e c t o r   r e l a t i v a   a   l a   a s i g n a c i  n   d e   m e m o r i a .   L o s   v a l o r e s   m  s   a l t o s   q u e   e l 
 
 c o l e c t o r   m  s   a g r e s i v o ,   s i n o   t a m b i  n   a u m e n t a r   e l   t a m a  o   d e   c a d a   p a s o   i n c r e m e n t a l .   L o s   v a l o r e s   i n f e r i o r e s   a   1 0 0   q u e   e l   c o l e c t o r 
 
 d e m a s i a d o   l e n t o   y   p u e d e   r e s u l t a r   e n   e l   c o l e c t o r   n u n c a   t e r m i n a r   u n   c i c l o .   E l   v a l o r   p o r   d e f e c t o ,   2 0 0 ,   s i g n i f i c a   q u e   e l   c o l e c t o r   s e   e j e c u t a   e n 
 
 " D o s   v e c e s "   l a   v e l o c i d a d   d e   l a   a s i g n a c i  n   d e   m e m o r i a . 
 
 
 
 P u e d e   c a m b i a r   e s t o s   n  m e r o s   l l a m a n d o   l u a _ g c   e n   C   o   c o l l e c t g a r b a g e   e n   L u a .   C o n   e s t a s   f u n c i o n e s   t a m b i  n   s e   p u e d e   c o n t r o l a r   l a 
 
 c o l e c t o r   d i r e c t a m e n t e   ( p o r   e j e m p l o ,   d e t e n e r   y   r e i n i c i a r   l a   m i s m a ) . 
 
 
 
 2 . 1 0 . 1   -   R e c o l e c c i  n   d e   B a s u r a - M e t a m e t h o d s 
 
 U s a n d o   l a   A P I   d e   C ,   s e   p u e d e   e s t a b l e c e r   d e   c o l e c c i  n   d e   b a s u r a   m e t a m e t h o d s   d e   u s e r d a t a   ( v  a s e      2 . 8 ) .   E s t o s   m e t a m e t h o d s   t a m b i  n   s o n   l l a m a d o s 
 
 f i n a l i z a d o r e s .   L o s   f i n a l i z a d o r e s   l e   p e r m i t e n   c o o r d i n a r   l a   r e c o l e c c i  n   d e   l a   b a s u r a   L u a   c o n   l a   g e s t i  n   d e   r e c u r s o s   e x t e r n o s   ( c o m o   e l   c i e r r e   d e 
 
 a r c h i v o s ,   c o n e x i o n e s   d e   r e d   o   b a s e   d e   d a t o s ,   o   l a   l i b e r a c i  n   d e   s u   p r o p i a   m e m o r i a ) . 
 
 
 
 U s e r d a t a   b a s u r a   c o n   u n   c a m p o   _ _   g c   e n   s u s   M e t a T a b l e s   n o   s e   r e c o g e n   d e   i n m e d i a t o   p o r   e l   r e c o l e c t o r   d e   b a s u r a .   E n   s u   l u g a r ,   L u a 
 
 l o s   p o n e   e n   u n a   l i s t a .   D e s p u  s   d e   l a   c o l e c c i  n ,   L u a   h a c e   e l   e q u i v a l e n t e   d e   l a   s i g u i e n t e   f u n c i  n   p a r a   c a d a   u s e r d a t a   e n   e s e 
 
 l i s t a : 
 
 
 
           f u n c i  n   d e   g c _ e v e n t   ( u d a t a ) 
 
               l o c a l   h   =   m e t a t a b l a   ( u d a t a ) .   _ _ g c 
 
               s i   h   a   c o n t i n u a c i  n 
 
                   h   ( u d a t a ) 
 
               f i n a l 
 
           f i n a l 
 
 
 
 A l   f i n a l   d e   c a d a   c i c l o   d e   r e c o l e c c i  n   d e   b a s u r a ,   l o s   f i n a l i z a d o r e s   d e   u s e r d a t a   s o n   l l a m a d o s   e n   o r d e n   i n v e r s o   a   s u   c r e a c i  n , 
 
 e n t r e   l o s   r e c o g i d o s   e n   e s e   c i c l o .   E s   d e c i r ,   e l   f i n a l i z a d o r   p r i m e r o   e n   s e r   l l a m a d o   e s   e l   a s o c i a d o   c o n   e l   u s e r d a t a 
 
 c r e a d o   e l   p a s a d o   e n   e l   p r o g r a m a .   E l   p r o p i o   u s e r d a t a   e s   l i b e r a d o   s  l o   e n   e l   p r  x i m o   c i c l o   d e   r e c o l e c c i  n   d e   b a s u r a . 
 
 
 
 2 . 1 0 . 2   -   T a b l a s   d  b i l e s 
 
 U n a   t a b l a   d  b i l   e s   u n a   t a b l a   c u y o s   e l e m e n t o s   s o n   r e f e r e n c i a s   d  b i l e s .   U n a   r e f e r e n c i a   d  b i l   e s   i g n o r a d a   p o r   e l   r e c o l e c t o r   d e   b a s u r a .   E n   o t r a s   p a l a b r a s , 
 
 p a l a b r a s ,   s i   l a s    n i c a s   r e f e r e n c i a s   a   u n   o b j e t o   s o n   r e f e r e n c i a s   d  b i l e s ,   a   c o n t i n u a c i  n ,   e l   r e c o l e c t o r   d e   b a s u r a   r e c o g e r    e s t e   o b j e t o . 
 
 
 
 U n a   t a b l a   d  b i l   p u e d e   t e n e r   c l a v e s   d  b i l e s ,   v a l o r e s   d  b i l e s ,   o   a m b a s   c o s a s .   U n a   t a b l a   c o n   c l a v e s   d  b i l e s   p e r m i t e   l a   r e c o g i d a   d e   s u s   l l a v e s ,   p e r o 
 
 i m p i d e   l a   r e c o g i d a   d e   s u s   v a l o r e s .   U n a   t a b l a   c o n   c l a v e s   d  b i l e s   y   v a l o r e s   d  b i l e s   p e r m i t e   l a   o b t e n c i  n   d e   a m b a s   t e c l a s   y 
 
 v a l o r e s .   E n   c u a l q u i e r   c a s o ,   s i   b i e n   l a   l l a v e   o   e l   v a l o r   s e   r e c o g e ,   e l   p a r   c o n j u n t o   s e   r e t i r a   d e   l a   m e s a .   L a   d e b i l i d a d   d e   l a 
 
 u n a   m e s a   e s   c o n t r o l a d a   p o r   e l   c a m p o   _ _   m o d e   d e   s u   m e t a t a b l a .   S i   e l   c a m p o   _ _   m o d e   e s   u n a   c a d e n a   q u e   c o n t i e n e   " k "   d e l   p e r s o n a j e , 
 
 l a s   l l a v e s   e n   l a   m e s a   s o n   d  b i l e s .   S i   _ _   m o d e   c o n t i e n e   ' v ' ,   l o s   v a l o r e s   d e   l a   t a b l a   s o n   d  b i l e s . 
 
 
 
 D e s p u  s   d e   u t i l i z a r   u n a   t a b l a   c o m o   u n   m e t a t a b l a ,   n o   s e   d e b e   c a m b i a r   e l   v a l o r   d e   s u   c a m p o   _ _   m o d e .   D e   l o   c o n t r a r i o ,   e l   c o m p o r t a m i e n t o   d  b i l   d e 
 
 l a s   t a b l a s   c o n t r o l a d a s   p o r   e s t e   m e t a t a b l a   n o   e s t    d e f i n i d o . 
 
 
 
 2 . 1 1   -   c o r r u t i n a s 
 
 L u a   s o p o r t a   c o - r u t i n a s ,   t a m b i  n   l l a m a d o s   m  l t i p l e s   h i l o s   d e   c o l a b o r a c i  n .   U n   c o - r u t i n a   e n   L u a   r e p r e s e n t a   u n   h i l o   i n d e p e n d i e n t e   d e 
 
 e j e c u c i  n .   A   d i f e r e n c i a   d e   l a s   d i s c u s i o n e s   e n   l o s   s i s t e m a s   d e   m u l t i p r o c e s o ,   s i n   e m b a r g o ,   u n a   c o - r u t i n a   s  l o   s e   s u s p e n d e   s u   e j e c u c i  n   p o r   u n a   l l a m a d a   e x p l  c i t a   a   u n 
 
 c e d e r   f u n c i  n . 
 
 
 
 S e   c r e a   u n a   c o - r u t i n a   c o n   u n a   l l a m a d a   a   c o r o u t i n e . c r e a t e .   S u    n i c o   a r g u m e n t o   e s   u n a   f u n c i  n   q u e   e s   l a   f u n c i  n   p r i n c i p a l   d e   l a 
 
 c o - r u t i n a .   L a   f u n c i  n   d e   c r e a r   s  l o   c r e a   u n a   n u e v a   c o - r u t i n a   y   d e v u e l v e   u n   i d e n t i f i c a d o r   p a r a   e l l a   ( u n   o b j e t o   d e   h i l o   t i p o ) ,   l o   h a c e 
 
 s e   i n i c i a   l a   e j e c u c i  n   c o - r u t i n a . 
 
 
 
 L a   p r i m e r a   v e z   q u e   l l a m e   a   c o r o u t i n e . r e s u m e ,   p a s a n d o   c o m o   p r i m e r   a r g u m e n t o   u n   h i l o   d e v u e l t o   p o r   c o r o u t i n e . c r e a t e ,   l a   c o - r u t i n a 
 
 i n i c i a   s u   e j e c u c i  n ,   e n   l a   p r i m e r a   l  n e a   d e   s u   f u n c i  n   p r i n c i p a l .   A r g u m e n t o s   a d i c i o n a l e s   p a s a d o s     a   c o r o u t i n e . r e s u m e   s e   t r a n s m i t e n   a 
 
 l a   f u n c i  n   d e   c o - r u t i n a   p r i n c i p a l .   D e s p u  s   d e   l a   c o - r u t i n a   c o m i e n z a   a   c o r r e r ,   s e   e j e c u t a   h a s t a   q u e   t e r m i n a   o   r e n d i m i e n t o s . 
 
 
 
 U n   c o - r u t i n a   p u e d e   t e r m i n a r   s u   e j e c u c i  n   d e   d o s   m a n e r a s :   n o r m a l m e n t e ,   c u a n d o   s u   f u n c i  n   p r i n c i p a l   r e t o r n a   ( e x p l  c i t a   o   i m p l  c i t a m e n t e , 
 
 d e s p u  s   d e   l a    l t i m a   i n s t r u c c i  n ) ,   y   d e   m a n e r a   a n o r m a l ,   s i   e x i s t e   u n   e r r o r   s i n   p r o t e c c i  n .   E n   e l   p r i m e r   c a s o ,   c o r o u t i n e . r e s u m e   d e v u e l v e 
 
 c i e r t o ,   a d e m  s   d e   l o s   v a l o r e s   d e v u e l t o s   p o r   l a   f u n c i  n   d e   c o - r u t i n a   p r i n c i p a l .   E n   c a s o   d e   e r r o r e s ,   c o r o u t i n e . r e s u m e   d e v u e l v e   f a l s e   m  s   u n 
 
 m e n s a j e   d e   e r r o r . 
 
 
 
 A   l o s   r e n d i m i e n t o s   d e   c o - r u t i n a   l l a m a n d o   c o r o u t i n e . y i e l d .   C u a n d o   l o s   r e n d i m i e n t o s   d e   u n   c o - r u t i n a ,   l o s   r e n d i m i e n t o s   c o r r e s p o n d i e n t e s   c o r o u t i n e . r e s u m e 
 
 i n m e d i a t a m e n t e ,   i n c l u s o   s i   e l   r e n d i m i e n t o   q u e   s u c e d e   d e n t r o   d e   l a s   l l a m a d a s   f u n c i o n e s   a n i d a d a s   ( e s   d e c i r ,   n o   e n   l a   f u n c i  n   p r i n c i p a l ,   p e r o   e n   u n a   f u n c i  n 
 
 d i r e c t a   o   i n d i r e c t a m e n t e   l l a m a d o   p o r   l a   f u n c i  n   p r i n c i p a l ) .   E n   e l   c a s o   d e   u n a   c e s i  n ,   c o r o u t i n e . r e s u m e   t a m b i  n   d e v u e l v e   v e r d a d e r o ,   m  s   c u a l q u i e r 
 
 l o s   v a l o r e s   p a s a n   a   c o r o u t i n e . y i e l d .   L a   p r  x i m a   v e z   q u e   v o l v e r   a   l a   c o - r u t i n a   m i s m a ,   c o n t i n  a   s u   e j e c u c i  n   d e s d e   e l   p u n t o 
 
 d o n d e   s e   p r o d u j o ,   c o n   l a   l l a m a d a   a   d e v o l v e r   c u a l q u i e r   c o r o u t i n e . y i e l d   a r g u m e n t o s   a d i c i o n a l e s   p a s a d o s     a   c o r o u t i n e . r e s u m e . 
 
 
 
 A l   i g u a l   q u e   c o r o u t i n e . c r e a t e ,   l a   f u n c i  n   c o r o u t i n e . w r a p   t a m b i  n   c r e a   u n a   c o - r u t i n a ,   p e r o   e n   l u g a r   d e   d e v o l v e r   e l   m i s m o   c o - r u t i n a , 
 
 q u e   d e v u e l v e   u n a   f u n c i  n   q u e ,   c u a n d o   s e   l e   l l a m a ,   s e   r e a n u d a   l a   c o - r u t i n a .   T o d o s   l o s   a r g u m e n t o s   q u e   s e   p a s a n   a   e s t a   f u n c i  n   c o m o   a r g u m e n t o s   a d i c i o n a l e s   v a n 
 
 a   c o r o u t i n e . r e s u m e .   c o r o u t i n e . w r a p   d e v u e l v e   t o d o s   l o s   v a l o r e s   d e v u e l t o s   p o r   c o r o u t i n e . r e s u m e ,   e x c e p t o   e l   p r i m e r o   ( e l   b o o l e a n o 
 
 e l   c  d i g o   d e   e r r o r ) .   A   d i f e r e n c i a   d e   c o r o u t i n e . r e s u m e ,   c o r o u t i n e . w r a p   n o   d e t e c t a r   e r r o r e s ,   c u a l q u i e r   e r r o r   s e   p r o p a g a   a   l a   p e r s o n a   q u e   l l a m a . 
 
 
 
 C o m o   e j e m p l o ,   c o n s i d e r e   e l   s i g u i e n t e   c  d i g o : 
 
 
 
           f u n c t i o n   f o o   ( a ) 
 
               p r i n t   ( " f o o " ,   a ) 
 
               v o l v e r   c o r o u t i n e . y i e l d   ( 2   *   a ) 
 
           f i n a l 
 
           
 
           C O   =   c o r o u t i n e . c r e a t e   ( f u n c i  n   ( a ,   b ) 
 
                       p r i n t   ( " c o - c u e r p o " ,   a ,   b ) 
 
                       l o c a l ,   r   =   f o o   ( a   + 1 ) 
 
                       p r i n t   ( " c o - c u e r p o " ,   r ) 
 
                       l o c a l ,   r ,   s   =   c o r o u t i n e . y i e l d   ( a   +   b ,   a - b ) 
 
                       p r i n t   ( " c o - c u e r p o " ,   r ,   s ) 
 
                       b   r e g r e s a r ,   " f i n " 
 
           f i n a l ) 
 
                         
 
           p r i n t   ( " p r i n c i p a l " ,   c o r o u t i n e . r e s u m e   ( c o ,   1 ,   1 0 ) ) 
 
           p r i n t   ( " p r i n c i p a l " ,   c o r o u t i n e . r e s u m e   ( c o ,   " r " ) ) 
 
           p r i n t   ( " p r i n c i p a l " ,   c o r o u t i n e . r e s u m e   ( c o ,   " x " ,   " Y " ) ) 
 
           p r i n t   ( " p r i n c i p a l " ,   c o r o u t i n e . r e s u m e   ( c o ,   " x " ,   " Y " ) ) 
 
 
 
 C u a n d o   s e   e j e c u t a ,   p r o d u c e   e l   s i g u i e n t e   r e s u l t a d o : 
 
 
 
           c o - c u e r p o   1   1 0 
 
           l o q u e s e a   2 
 
           
 
           4   v e r d a d e r a   p r i n c i p a l 
 
           c o - c u e r p o   r 
 
           p r i n c i p a l   d e   v e r d a d   1 1   - 9 
 
           c o - x   y   e l   c u e r p o 
 
           p r i n c i p a l   v e r d a d e r o   d e   1 0   f i n a l e s 
 
           f a l s a   p r i n c i p a l   n o   p u e d e   r e a n u d a r   l a   c o - r u t i n a   m u e r t o s 
 
 
 
 3   -   E l   A p p l i c a t i o n   P r o g r a m   I n t e r f a c e 
 
 E s t a   s e c c i  n   d e s c r i b e   l a   A P I   C   p a r a   L u a ,   e s   d e c i r ,   e l   c o n j u n t o   d e   f u n c i o n e s   C   a   d i s p o s i c i  n   d e l   p r o g r a m a   h o s t   p a r a   c o m u n i c a r s e   c o n 
 
 L u a .   T o d a s   l a s   f u n c i o n e s   d e   l a   A P I   y   l o s   t i p o s   r e l a c i o n a d o s   c o n   l a s   c o n s t a n t e s   s e   d e c l a r a n   e n   e l   a r c h i v o   d e   c a b e c e r a   l u a . h . 
 
 
 
 I n c l u s o   c u a n d o   s e   u t i l i z a   e l   t  r m i n o   " f u n c i  n " ,   c u a l q u i e r   i n s t a l a c i  n   e n   l a   A P I   s e   p u e d e   p r o p o r c i o n a r   c o m o   u n a   m a c r o .   T o d a s   l a s   m a c r o s   t a l e s   u t i l i z a r   c a d a 
 
 d e   s u s   a r g u m e n t o s   e x a c t a m e n t e   u n a   v e z   ( e x c e p t o   p a r a   e l   p r i m e r   a r g u m e n t o ,   q u e   e s   s i e m p r e   u n   e s t a d o   d e   L u a ) ,   y   p o r   l o   t a n t o   n o   g e n e r a n   n i n g  n 
 
 o c u l t a   l o s   e f e c t o s   s e c u n d a r i o s . 
 
 
 
 A l   i g u a l   q u e   e n   l a   m a y o r  a   d e   l a s   b i b l i o t e c a s   d e   C ,   l a s   f u n c i o n e s   d e   l a   A P I   d e   L u a   n o   v e r i f i c a n   s u s   a r g u m e n t o s   a   f a v o r   d e   l a   v a l i d e z   o   c o n s i s t e n c i a .   S i n   e m b a r g o ,   p u e d e 
 
 c a m b i a r   e s t e   c o m p o r t a m i e n t o   m e d i a n t e   l a   c o m p i l a c i  n   d e   L u a   c o n   u n a   d e f i n i c i  n   a d e c u a d a   p a r a   e l   l u a i _ a p i c h e c k   m a c r o ,   e n   l u a c o n f . h   a r c h i v o . 
 
 
 
 3 . 1   -   L a   p i l a   d e 
 
 L u a   u t i l i z a   u n a   p i l a   v i r t u a l   p a r a   p a s a r   v a l o r e s   d e s d e   y   C .   C a d a   e l e m e n t o   d e   e s t a   p i l a   r e p r e s e n t a   u n   v a l o r   d e   L u a   ( n u l a ,   e l   n  m e r o , 
 
 c a d e n a ,   e t c . ) 
 
 
 
 S i e m p r e   q u e   L u a   l l a m a   C ,   l a   f u n c i  n   l l a m a d a   r e c i b e   u n a   n u e v a   p i l a ,   q u e   e s   i n d e p e n d i e n t e   d e   l a s   p i l a s   a n t e r i o r e s   y   d e   l a s   p i l a s   d e   C 
 
 f u n c i o n e s   q u e   t o d a v  a   e s t  n   a c t i v o s .   E s t a   p i l a   c o n t i e n e   i n i c i a l m e n t e   l o s   a r g u m e n t o s   d e   l a   f u n c i  n   C   y   e s   d o n d e   l a   C 
 
 f u n c i  n   d e   s u s   r e s u l t a d o s   e m p u j a   a   s e r   d e v u e l t o s   a   l a   p e r s o n a   q u e   l l a m a   ( v e r   l u a _ C F u n c t i o n ) . 
 
 
 
 P a r a   m a y o r   c o m o d i d a d ,   l a   m a y o r  a   d e   l a s   o p e r a c i o n e s   d e   c o n s u l t a   d e   l a   A P I   d e   n o   s e g u i r   u n a   d i s c i p l i n a   e s t r i c t a   d e   p i l a .   E n   s u   l u g a r ,   p u e d e   r e f e r i r s e   a   c u a l q u i e r 
 
 e l e m e n t o   d e   l a   p i l a   m e d i a n t e   e l   u s o   d e   u n    n d i c e :   U n    n d i c e   p o s i t i v o   r e p r e s e n t a   u n a   p o s i c i  n   a b s o l u t a   d e   p i l a   ( c o m e n z a n d o   e n   1 ) ;   u n   n e g a t i v o 
 
  n d i c e   r e p r e s e n t a   u n   d e s p l a z a m i e n t o   r e l a t i v o   a   l a   p a r t e   s u p e r i o r   d e   l a   p i l a .   M  s   e s p e c  f i c a m e n t e ,   s i   l a   p i l a   t i e n e   n   e l e m e n t o s ,   e n t o n c e s   e l    n d i c e   1 
 
 r e p r e s e n t a   e l   p r i m e r   e l e m e n t o   ( e s   d e c i r ,   e l   e l e m e n t o   q u e   s e   i n s e r t a   e n   l a   p i l a   p r i m e r o )   y   e l    n d i c e   n   r e p r e s e n t a   e l    l t i m o 
 
 e l e m e n t o ;    n d i c e   - 1   t a m b i  n   r e p r e s e n t a   e l    l t i m o   e l e m e n t o   ( e s   d e c i r ,   e l   e l e m e n t o   e n   l a   p a r t e   s u p e r i o r )   y   d e    n d i c e   n   r e p r e s e n t a   l a   p r i m e r a 
 
 e l e m e n t o .   D e c i m o s   q u e   u n    n d i c e   e s   v  l i d a   s i   e s t    c o m p r e n d i d a   e n t r e   1   y   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   ( e s   d e c i r ,   s i   1   d"  a b s   (  n d i c e )   d"  a r r i b a ) . 
 
 
 
 3 . 2   -   t a m a  o   d e   l a   p i l a 
 
 A l   i n t e r a c t u a r   c o n   l a   A P I   d e   L u a ,   u s t e d   e s   r e s p o n s a b l e   d e   v e l a r   p o r   l a   c o h e r e n c i a .   E n   p a r t i c u l a r ,   u s t e d   e s   r e s p o n s a b l e   d e 
 
 e l   c o n t r o l   d e   d e s b o r d a m i e n t o   d e   p i l a .   P u e d e   u t i l i z a r   l a   f u n c i  n   d e   l u a _ c h e c k s t a c k   p a r a   h a c e r   c r e c e r   e l   t a m a  o   d e   l a   p i l a . 
 
 
 
 C a d a   v e z   q u e   L u a   l l a m a   a   C ,   s e   a s e g u r a   q u e   a l   m e n o s   e n   l a s   p o s i c i o n e s   d e   l a   p i l a   L U A _ M I N S T A C K   e s t  n   d i s p o n i b l e s .   L U A _ M I N S T A C K   s e   d e f i n e   c o m o   2 0 , 
 
 d e   m a n e r a   q u e   p o r   l o   g e n e r a l   u s t e d   n o   t i e n e   q u e   p r e o c u p a r s e   p o r   e l   e s p a c i o   d e   p i l a   a   m e n o s   q u e   s u   c  d i g o   t i e n e   l a z o s   d e   l o s   e l e m e n t o s   q u e   e m p u j a n   e n   l a   p i l a . 
 
 
 
 L a   m a y o r  a   d e   l a s   f u n c i o n e s   d e   c o n s u l t a   a c e p t a r   c o m o    n d i c e s   c u a l q u i e r   v a l o r   d e n t r o   d e l   e s p a c i o   d e   p i l a   d i s p o n i b l e ,   e s   d e c i r ,   l o s    n d i c e s   d e   h a s t a   e l   m  x i m o   d e   l a   p i l a 
 
 t a m a  o   q u e   h a n   e s t a b l e c i d o   a   t r a v  s   l u a _ c h e c k s t a c k .   E s t o s    n d i c e s   s e   d e n o m i n a n    n d i c e s   a c e p t a b l e s .   M  s   f o r m a l m e n t e ,   s e   d e f i n e   u n 
 
  n d i c e   a c e p t a b l e   c o m o   s i g u e : 
 
 
 
           (  n d i c e   < 0   & &   a b s   (  n d i c e )   < =   s u p e r i o r )   |   | 
 
           (  n d i c e >   0   & &   i n d e x   < s t a c k s p a c e   = ) 
 
 
 
 T e n g a   e n   c u e n t a   q u e   0   n o   e s   u n    n d i c e   a c e p t a b l e . 
 
 
 
 3 . 3   -   L a s   p s e u d o -  n d i c e s 
 
 A   m e n o s   q u e   s e   i n d i q u e   l o   c o n t r a r i o ,   c u a l q u i e r   f u n c i  n   q u e   a c e p t a    n d i c e s   v  l i d o s   t a m b i  n   p u e d e   s e r   l l a m a d o   c o n   e l   p s e u d o -  n d i c e s ,   q u e   r e p r e s e n t a n 
 
 a l g u n o s   v a l o r e s   L u a   q u e   s o n   a c c e s i b l e s   p a r a   e l   c  d i g o   C ,   p e r o   q u e   n o   e s t  n   e n   l a   p i l a .   L a s   p s e u d o -  n d i c e s   s e   u t i l i z a n   p a r a   a c c e d e r   a   l a   r o s c a 
 
 m e d i o   a m b i e n t e ,   e l   e n t o r n o   d e   l a   f u n c i  n ,   e l   r e g i s t r o ,   y   l o s   u p v a l u e s     d e   u n a   f u n c i  n   C   ( v  a s e      3 . 4 ) . 
 
 
 
 E l   e n t o r n o   d e   h i l o   ( d o n d e   v i v e n   l a s   v a r i a b l e s   g l o b a l e s )   e s t    s i e m p r e   a   p s e u d o -  n d i c e   d e   L U A _ G L O B A L S I N D E X .   E l   e n t o r n o   d e l 
 
 e j e c u t a n d o   l a   f u n c i  n   C   e s t    s i e m p r e   e n   p s e u d o -  n d i c e   d e   L U A _ E N V I R O N I N D E X . 
 
 
 
 P a r a   a c c e d e r   y   c a m b i a r   e l   v a l o r   d e   l a s   v a r i a b l e s   g l o b a l e s ,   p u e d e   u t i l i z a r   l a s   o p e r a c i o n e s   r e g u l a r e s   d e   m e s a   a   t r a v  s   d e   u n a   m e s a   d e   m e d i o   a m b i e n t e .   P a r a 
 
 e j e m p l o ,   p a r a   a c c e d e r   a l   v a l o r   d e   u n a   v a r i a b l e   g l o b a l ,   l o 
 
 
 
           l u a _ g e t f i e l d   ( L ,   L U A _ G L O B A L S I N D E X ,   v a r i a b l e ) ; 
 
 
 
 3 . 4   -   C i e r r e s   C 
 
 C u a n d o   u n a   f u n c i  n   C   s e   c r e a ,   e s   p o s i b l e   a s o c i a r   a l g u n o s   v a l o r e s   c o n   e l l a ,   c r e a n d o   a s    u n   c i e r r e   C   y   e s t o s   v a l o r e s   s o n 
 
 l l a m a   u p v a l u e s     y   s o n   a c c e s i b l e s   a   l a   f u n c i  n   c a d a   v e z   q u e   s e   l l a m a   ( v e r   l u a _ p u s h c c l o s u r e ) . 
 
 
 
 S i e m p r e   q u e   u n a   f u n c i  n   d e   C   s e   l l a m a ,   s u s   u p v a l u e s     s e   e n c u e n t r a n   e n   e s p e c  f i c o   p s e u d o -  n d i c e s .   E s t o s   p s e u d o -  n d i c e s   s o n   p r o d u c i d o s   p o r 
 
 l u a _ u p v a l u e i n d e x   l a   m a c r o .   E l   p r i m e r   v a l o r   a s o c i a d o   c o n   u n a   f u n c i  n   e s   e n   l u a _ u p v a l u e i n d e x   p o s i c i  n   ( 1 ) ,   y   a s    s u c e s i v a m e n t e .   C u a l q u i e r 
 
 a c c e d e r   a   l u a _ u p v a l u e i n d e x   ( n ) ,   d o n d e   n   e s   m a y o r   q u e   e l   n  m e r o   d e   u p v a l u e s     d e   l a   f u n c i  n   a c t u a l   ( p e r o   n o   m a y o r   q u e 
 
 2 5 6 ) ,   p r o d u c e   u n   n i v e l   a c e p t a b l e   ( a u n q u e   n o   v  l i d o )    n d i c e . 
 
 
 
 3 . 5   -   R e g i s t r o 
 
 L u a   p r o p o r c i o n a   u n   r e g i s t r o ,   u n a   t a b l a   p r e d e f i n i d a   q u e   p u e d e   s e r   u t i l i z a d o   p o r   c u a l q u i e r   c  d i g o   C   p a r a   a l m a c e n a r   c u a l q u i e r   v a l o r   L u a   s e   n e c e s i t a   a l m a c e n a r . 
 
 E s t a   t a b l a   s e   e n c u e n t r a   s i e m p r e   e n   e l   p s e u d o -  n d i c e   d e   L U A _ R E G I S T R Y I N D E X .   C u a l q u i e r   b i b l i o t e c a   d e   C   p u e d e   a l m a c e n a r   d a t o s   e n   e s t a   t a b l a ,   p e r o   d e b e r  a 
 
 t e n g a   c u i d a d o   d e   e l e g i r   c l a v e s   d i f e r e n t e s   d e   l a s   u t i l i z a d a s   p o r   o t r a s   b i b l i o t e c a s ,   p a r a   e v i t a r   c o l i s i o n e s .   P o r   l o   g e n e r a l ,   u s t e d   d e b e   u s a r   c o m o 
 
 c l a v e   d e   u n a   c a d e n a   q u e   c o n t i e n e   e l   n o m b r e   d e   l a   b i b l i o t e c a   o   u n   u s e r d a t a   l i g e r o   c o n   l a   d i r e c c i  n   d e   u n   o b j e t o   d e   C   e n   e l   c  d i g o . 
 
 
 
 L a s   c l a v e s   d e   e n t e r o s   e n   e l   r e g i s t r o   s o n   u t i l i z a d o s   p o r   e l   m e c a n i s m o   d e   r e f e r e n c i a ,   e j e c u t a d o   p o r   l a   b i b l i o t e c a   a u x i l i a r ,   y   p o r   l o   t a n t o 
 
 n o   d e b e   s e r   u t i l i z a d o   p a r a   o t r o s   f i n e s . 
 
 
 
 3 . 6   -   M a n e j o   d e   e r r o r e s   e n   C 
 
 I n t e r n a m e n t e ,   L u a   u s a   l a   f a c i l i d a d   d e   C   l o n g j m p   p a r a   c o n t r o l a r   l o s   e r r o r e s .   ( T a m b i  n   s e   p u e d e   o p t a r   p o r   u t i l i z a r   e x c e p c i o n e s   s i   s e   u t i l i z a   C   +   + ,   v e r 
 
 l u a c o n f . h   a r c h i v o . )   C u a n d o   L u a   s e   e n f r e n t a   a   u n   e r r o r   ( p o r   e j e m p l o ,   e r r o r e s   d e   a s i g n a c i  n   d e   m e m o r i a ,   e r r o r e s   d e   t i p o ,   e r r o r e s   d e   s i n t a x i s   y   e r r o r e s   d e   t i e m p o   d e   e j e c u c i  n ) 
 
 s e   g e n e r a   u n   e r r o r ,   e s   d e c i r ,   q u e   h a c e   u n   s a l t o   d e   l o n g i t u d .   U n   m e d i o   a m b i e n t e   p r o t e g i d o   u s a   s e t j m p   p a r a   e s t a b l e c e r   u n   p u n t o   d e   r e c u p e r a r s e ,   c u a l q u i e r   e r r o r 
 
 s a l t a   h a s t a   e l   p u n t o   d e   r e c u p e r a r   l a   m a y o r   p a r t e   r e c i e n t e   a c t i v o . 
 
 
 
 L a   m a y o r  a   d e   l a s   f u n c i o n e s   d e   l a   A P I   s e   p u e d e   p r o d u c i r   u n   e r r o r ,   p o r   e j e m p l o   d e b i d o   a   u n   e r r o r   d e   a s i g n a c i  n   d e   m e m o r i a .   L a   d o c u m e n t a c i  n   d e   c a d a 
 
 l a   f u n c i  n   i n d i c a   s i   s e   p u e d e   t i r a r   e r r o r e s . 
 
 
 
 D e n t r o   d e   u n a   f u n c i  n   C   q u e   u s t e d   p u e d e   l a n z a r   u n   e r r o r   a l   l l a m a r   l u a _ e r r o r . 
 
 
 
 3 . 7   -   F u n c i o n e s   y   t i p o s 
 
 A q u    t e n e m o s   u n a   l i s t a   d e   t o d a s   l a s   f u n c i o n e s   y   t i p o s   d e   l a   A P I   d e   C   e n   o r d e n   a l f a b  t i c o .   C a d a   f u n c i  n   t i e n e   u n   i n d i c a d o r   d e   e s t a   m a n e r a :   [ - o , 
 
 +   P ,   x ] 
 
 
 
 E l   p r i m e r   c a m p o ,   o ,   e s   c u  n t o s   e l e m e n t o s   d e   l a   f u n c i  n   a p a r e c e   d e   l a   p i l a .   E l   s e g u n d o   c a m p o ,   p ,   e s   c u  n t o s   e l e m e n t o s   d e   l a 
 
 f u n c i  n   e m p u j a   e n   l a   p i l a .   ( C u a l q u i e r   f u n c i  n   s i e m p r e   e m p u j a   s u s   r e s u l t a d o s   d e s p u  s   d e   h a c e r   e s t a l l a r   s u s   a r g u m e n t o s . )   U n   c a m p o   e n   f o r m a 
 
 x   |   y   s i g n i f i c a   q u e   l a   f u n c i  n   p u e d e   e m p u j a r   ( o   p o p )   l o s   e l e m e n t o s   d e   x   o   y ,   d e p e n d i e n d o   d e   l a   s i t u a c i  n ,   u n   s i g n o   d e   i n t e r r o g a c i  n   ' ? '   l o s   m e d i o s   q u e 
 
 n o   p o d e m o s   s a b e r   c u  n t o s   e l e m e n t o s   d e   l a   f u n c i  n   a p a r e c e   /   e m p u j a   a l   m i r a r   s  l o   a   s u s   a r g u m e n t o s   ( p o r   e j e m p l o ,   s e   p u e d e   d e p e n d e r   d e   l o   q u e 
 
 e s t    e n   l a   p i l a ) .   E l   t e r c e r   c a m p o ,   x ,   i n d i c a   s i   l a   f u n c i  n   p u e d e   a r r o j a r   e r r o r e s :   ' - '   s i g n i f i c a   q u e   l a   f u n c i  n   n u n c a   t i r a   n i n g u n a 
 
 e r r o r ,   " m "   s i g n i f i c a   q u e   l a   f u n c i  n   p u e d e   p r o d u c i r   u n   e r r o r   s  l o   s e   d e b e   a   q u e   n o   h a y   m e m o r i a   s u f i c i e n t e ,   " e "   s i g n i f i c a   q u e   l a   f u n c i  n   p u e d e   l a n z a r   o t r a 
 
 t i p o s   d e   e r r o r e s ,   " v "   s i g n i f i c a   q u e   l a   f u n c i  n   p u e d e   p r o d u c i r   u n   e r r o r   a   p r o p  s i t o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ A l l o c 
 
 t y p e d e f   v o i d   *   ( *   l u a _ A l l o c )   ( v o i d   *   u d , 
 
                                                           v o i d   *   p t r ; 
 
                                                           o s i z e   s i z e _ t , 
 
                                                           n S i z e   s i z e _ t ) ; 
 
 E l   t i p o   d e   l a   f u n c i  n   d e   a s i g n a c i  n   d e   m e m o r i a   u t i l i z a d o   p o r   l o s   E s t a d o s   L u a .   L a   f u n c i  n   d e   a s i g n a d o r   d e b e   p r o p o r c i o n a r   u n a   f u n c i o n a l i d a d   s i m i l a r 
 
 R E A L L O C   j u e ,   p e r o   n o   e x a c t a m e n t e   d e   l a   n u b e .   S u s   a r g u m e n t o s   s o n   u d ,   u n   p u n t e r o   o p a c o   P a s a d o   j u e   l u a _ n e w s t a t e ,   p t r ,   u n   p u n t e r o   a   l a 
 
 b l o q u e a r   s e r   a s i g n a d o   /   r e a s i g n a d o   /   l i b e r a d o ;   o s i z e ,   e l   t a m a  o   o r i g i n a l   d e l   b l o q u e ;   n S i z e ,   e l   n u e v o   t a m a  o   d e l   b l o q u e .   p t r   e s 
 
 N U L L   s i   y   s  l o   s i   o s i z e   e s   c e r o .   C u a n d o   n S i z e   e s   c e r o ,   e l   B e c a r i o   d e b e r    d e v o l v e r   N U L L ,   s i   o s i z e   n o   e s   c e r o ,   s e   d e b e   l i b e r a r 
 
 e l   b l o q u e   a p u n t a d o   p o r   p t r   j u e .   C u a n d o   n S i z e   n o   e s   c e r o ,   e l   a s i g n a d o r   d e v u e l v e   N U L L   s i   y   s  l o   s i   n o   p u e d e   l l e n a r   l a   s o l i c i t u d . 
 
 C u a n d o   n S i z e   n o   e s   c e r o   y   o s i z e   e s   c e r o ,   e l   B e c a r i o   d e b e   c o m p o r t a r s e   c o m o   m a l l o c .   C u a n d o   n S i z e   y   o s i z e   n o   s o n   c e r o ,   e l 
 
 B e c a r i o   s e   c o m p o r t a   c o m o   r e a l l o c .   L u a   a s u m e   e l   a s i g n a d o r   d e   q u e   n u n c a   f a l l a   c u a n d o   o s i z e >   n S i z e   = . 
 
 
 
 E s t a   e s   u n a   a p l i c a c i  n   s i m p l e   p a r a   l a   f u n c i  n   d e   a s i g n a d o r .   S e   u t i l i z a   e n   l a   b i b l i o t e c a   a u x i l i a r   p o r   l u a L _ n e w s t a t e . 
 
 
 
           v o i d   *   l _ a l l o c   ( v o i d   *   u d ,   v o i d   *   p t r ,   s i z e _ t   o s i z e , 
 
                                                                                                 n S i z e   s i z e _ t )   { 
 
               ( V a c  o )   u d ,   ( v o i d )   o s i z e ;   /   *   n o   s e   u t i l i z a   *   / 
 
               i f   ( n S i z e   = =   0 )   { 
 
                   f r e e   ( p t r ) ; 
 
                   d e v u e l v e n   N U L L ; 
 
               } 
 
               m  s 
 
                   R e t o r n o   r e a l l o c   ( p t r ,   n S i z e ) ; 
 
           } 
 
 
 
 E s t e   c  d i g o   a s u m e   q u e   e l   l i b r e   ( N U L L )   n o   t i e n e   n i n g  n   e f e c t o   y   r e a l l o c   E s o   ( N U L L ,   t a m a  o )   e s   e q u i v a l e n t e   a   m a l l o c   ( s i z e ) .   A N S I   C   g a r a n t i z a 
 
 A m b o s   c o m p o r t a m i e n t o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ a t p a n i c 
 
 [ - 0 ,   0 ,   - ] 
 
 
 
 l u a _ C F u n c t i o n   l u a _ a t p a n i c   ( l u a _ S t a t e   L   * ,   l u a _ C F u n c t i o n   p a n i c f ) ; 
 
 E s t a b l e c e   u n a   f u n c i  n   d e   p  n i c o   n u e v o   y   s e   d e v u e l v e   a   l a   a n t i g u a . 
 
 
 
 S i   o c u r r e   u n   e r r o r   f u e r a   d e   c u a l q u i e r   e n t o r n o   p r o t e g i d o ,   L u a   L l a m a   a   u n a   f u n c i  n   d e   p  n i c o   y   l u e g o   l l a m a   a   l a   s a l i d a   ( E X I T _ F A I L U R E ) ,   p o r   l o   t a n t o 
 
 s a l i r   d e   l a   a p l i c a c i  n   h o s t .   S u   f u n c i  n   d e   p  n i c o   p u e d e   e v i t a r   e s t a   s a l i d a   p o r   n o   v o l v e r   j a m  s   ( p o r   e j e m p l o ,   h a c i e n d o   u n   s a l t o   d e   l o n g i t u d ) . 
 
 
 
 L a   f u n c i  n   d e   p  n i c o   p u e d e   t e n e r   a c c e s o   a l   m e n s a j e   d e   e r r o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c a l l 
 
 [ -   ( N a r g s   +   1 )   +   n r e s u l t s ,   e ] 
 
 
 
 v o i d   l u a _ c a l l   ( l u a _ S t a t e   L   * ,   i n t   n a r g s ,   n r e s u l t s   i n t ) ; 
 
 L l a m a   a   u n a   f u n c i  n . 
 
 
 
 P a r a   l l a m a r   a   u n a   f u n c i  n   s e   d e b e   u t i l i z a r   e l   s i g u i e n t e   p r o t o c o l o :   e n   p r i m e r   l u g a r ,   l a   f u n c i  n   a   s e r   l l a m a d a   s e   i n s e r t a   e n   l a   p i l a   y ,   a   c o n t i n u a c i  n , 
 
 l o s   a r g u m e n t o s   d e   l a   f u n c i  n   s e   i n s e r t a n   e n   f o r m a   d i r e c t a ,   e s   d e c i r ,   e l   p r i m e r   a r g u m e n t o   e s   e m p u j a d o   e n   p r i m e r   l u g a r .   P o r    l t i m o   s e   l l a m a   a 
 
 l u a _ c a l l ;   n a r g s   e s   e l   n  m e r o   d e   a r g u m e n t o s   q u e   s e   i n s e r t a   e n   l a   p i l a .   T o d o s   l o s   a r g u m e n t o s   y   l a   f u n c i  n   d e   v a l o r   s e   e x t r a e n 
 
 d e   l a   p i l a   C u a n d o   l a   f u n c i  n   s e   l l a m a .   L o s   r e s u l t a d o s   d e   l a   f u n c i  n   s e   i n s e r t a   e n   l a   p i l a   c u a n d o   l a   f u n c i  n   r e t o r n a .   L a 
 
 n  m e r o   d e   r e s u l t a d o s   s e   a j u s t a   n r e s u l t s   j u e v e s ,   a   m e n o s   q u e   n r e s u l t s   e s   L U A _ M U L T R E T .   E n   e s t e   c a s o ,   t o d o s   l o s   r e s u l t a d o s   d e   l a   f u n c i  n   s o n 
 
 e m p u j a d o .   L u a   s e   e n c a r g a   d e   q u e   l o s   v a l o r e s   d e v u e l t o s   c a b e r   e n   e l   e s p a c i o   d e   p i l a .   L o s   r e s u l t a d o s   d e   l a   f u n c i  n   s e   i n s e r t a   e n   l a   p i l a   e n   l a 
 
 o r d e n   d i r e c t a   ( e l   p r i m e r   r e s u l t a d o   e s   e m p u j a d o   p r i m e r o ) ,   e s   d e c i r ,   q u e   d e s p u  s   d e   l a   l l a m a d a   d e l    l t i m o   r e s u l t a d o   s e   e n c u e n t r a   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 C u a l q u i e r   e r r o r   d e n t r o   d e   l a   f u n c i  n   s e   l l a m a   p r o p a g a   h a c i a   a r r i b a   ( c o n   u n   l o n g j m p ) . 
 
 
 
 E l   s i g u i e n t e   e j e m p l o   m u e s t r a   c  m o   e l   p r o g r a m a   d e   a c o g i d a   p u e d e n   h a c e r   l o s   j u e   e q u i v a l e n t e s   e l   c  d i g o   L u a : 
 
 
 
           a   =   f   ( " c  m o " ,   t . x ,   1 4 ) 
 
 
 
 A q u    e s t    e n   C : 
 
 
 
           l u a _ g e t f i e l d   ( L ,   L U A _ G L O B A L S I N D E X ,   ' f ' )   /   *   f u n c i  n   a   s e r   l l a m a d a   *   / 
 
           l u a _ p u s h s t r i n g   ( L ,   " c  m o " )   /   *   p r i m e r o   e l   a r g u m e n t o   *   / 
 
           l u a _ g e t f i e l d   ( L   L U A _ G L O B A L S I N D E X ,   " t " )   /   *   t a b l a   i n d e x a d a   s e r   *   / 
 
           l u a _ g e t f i e l d   ( W - 1 ,   " x " )   /   *   r e s u l t a d o   d e   p u s h - T X   ( s e g u n d o   a r g u m e n t o )   *   / 
 
           l u a _ r e m o v e   ( L ,   - 2 ) ;   /   *   E l i m i n a r   l a s   " t "   d e   l a   p i l a   *   / 
 
           l u a _ p u s h i n t e g e r   ( L   1 4 )   /   *   a r g u m e n t o   d e   t e r c e r o   *   / 
 
           " l l a m a d a "   l u a _ c a l l   ( L ,   3 ,   1 )   /   *   f   ' c o n   t r e s   a r g u m e n t o s   y   e l   r e s u l t a d o   *   1   / 
 
           l u a _ s e t f i e l d   ( L   L U A _ G L O B A L S I N D E X ,   " A " )   /   *   E s t a b l e c e r   g l o b a l e s   " a "   *   / 
 
 
 
 T e n g a   e n   c u e n t a   q u e   e l   c  d i g o   a n t e r i o r   e s   " e q u i l i b r a d o " :   a l   f i n a l   d e   l o s   S T I ,   l a   p i l a   v u e l v e   a   s u   c o n f i g u r a c i  n   o r i g i n a l .   E s t o   s e   c o n s i d e r a 
 
 b u e n a   p r  c t i c a   d e   p r o g r a m a c i  n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ C F u n c t i o n 
 
 t y p e d e f   i n t   ( l u a _ C F u n c t i o n   * )   ( *   l u a _ S t a t e   L ) ; 
 
 P a r a   f u n c i o n e s   d e   t i p o   C . 
 
 
 
 P a r a   p o d e r   c o m u n i c a r s e   c o r r e c t a m e n t e   c o n   L u a ,   u n a   f u n c i  n   C   d e b e   u t i l i z a r   e l   s i g u i e n t e   p r o t o c o l o ,   q u e   d e f i n e   l o s   p a r  m e t r o s   d e   f o r m a 
 
 P a s a d o   y   l o s   r e s u l t a d o s   s o n   l o s   s i g u i e n t e s :   u n a   f u n c i  n   C   r e c i b e   s u s   a r g u m e n t o s   d e   L u a   e n   e l   S U   p i l a   e n   o r d e n   d i r e c t o   ( e l   p r i m e r   a r g u m e n t o   e s 
 
 e m p u j    p r i m e r o ) .   P o r   l o   t a n t o ,   c u a n d o   l a   f u n c i  n   c o m i e n z a ,   l u a _ g e t t o p   ( L )   d e v u e l v e   e l   n  m e r o   d e   a r g u m e n t o s   r e c i b i d o s   p o r   l a   f u n c i  n .   L a 
 
 p r i m e r   a r g u m e n t o   ( s i   e x i s t e )   e n   e l    n d i c e   1   y   s u    l t i m o   a r g u m e n t o   e s t    e n   e l    n d i c e   l u a _ g e t t o p   ( L ) .   P a r a   d e v o l v e r   l o s   v a l o r e s   j u e   L u a ,   u n a   f u n c i  n   d e   C 
 
 E l l o s   s i m p l e m e n t e   e m p u j a   e n   l a   p i l a ,   e n   o r d e n   d i r e c t o   ( e l   p r i m e r   r e s u l t a d o   e s   e m p u j a d o   e n   p r i m e r   l u g a r ) ,   y   d e v u e l v e   e l   n  m e r o   d e   r e s u l t a d o s .   C u a l q u i e r 
 
 O t r o   v a l o r   e n   l a   p i l a   p o r   d e b a j o   d e   l o s   r e s u l t a d o s   s e r  n   d e b i d a m e n t e   d e s c a r t a d a   p o r   L u a .   A l   i g u a l   q u e   u n a   f u n c i  n   L u a ,   u n a   f u n c i  n   d e   C   L l a m a d o   p o r 
 
 T a m b i  n   L u a   p u e d e   v o l v e r   m u c h o s   r e s u l t a d o s . 
 
 
 
 A   m o d o   d e   e j e m p l o ,   l o   s i g u i e n t e :   l a   f u n c i  n   r e c i b e   u n   n  m e r o   v a r i a b l e   d e   a r g u m e n t o s   n u m  r i c o s   y   d e v u e l v e   s u   p r o m e d i o   y   s u m a : 
 
 
 
           e s t  t i c a   i n t   f o o   ( l u a _ S t a t e   *   L )   { 
 
               n   =   i n t   l u a _ g e t t o p   ( L )   /   *   E l   n  m e r o   d e   a r g u m e n t o s   *   / 
 
               l u a _ N u m b e r   s u m a   =   0 ; 
 
               i n t   i ; 
 
               f o r   ( i   =   1   i   < =   n   i   +   + )   { 
 
                   i f   ( !   l u a _ i s n u m b e r   ( L   i ) )   { 
 
                       l u a _ p u s h s t r i n g   ( L   " a r g u m e n t o   i n c o r r e c t o " ) ; 
 
                       l u a _ e r r o r   ( L ) ; 
 
                   } 
 
                   l u a _ t o n u m b e r   +   =   s u m a   ( L   i ) ; 
 
               } 
 
               l u a _ p u s h n u m b e r   ( s u m a   L   /   n )   /   *   p r i m e r   r e s u l t a d o   *   / 
 
               l u a _ p u s h n u m b e r   ( L ,   s u m a )   /   *   r e s u l t a d o   d e l   s e g u n d o   *   / 
 
               d e v o l v e r   2 ,   n  m e r o   /   *   d e   l o s   r e s u l t a d o s   *   / 
 
           } 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c h e c k s t a c k 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 i n t   l u a _ c h e c k s t a c k   ( l u a _ S t a t e   L   * ,   i n t   e x t r a ) ; 
 
 A s e g u r a   q u e   h a y   p o r   l o   m e n o s   r a n u r a s   a d i c i o n a l e s   l i b r e s   d e   p i l a   d e   l a   p i l a .   D e v u e l v e   f a l s o   s i   n o   l o   p u e d e   h a c e r   c r e c e r   l a   p i l a   q u e   j u e 
 
 t a m a  o .   E s t a   f u n c i  n   n o   s e   r e d u c e   l a   p i l a ,   s i   l a   p i l a   y a   e s   m  s   g r a n d e   q u e   e l   n u e v o   t a m a  o ,   s e   d e j a   s i n   c a m b i o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c l o s e 
 
 [ - 0 ,   0 ,   - ] 
 
 
 
 l u a _ c l o s e   v o i d   ( l u a _ S t a t e   L   * ) ; 
 
 D e s t r u y e   t o d o s   l o s   o b j e t o s   e n   l a   v i s t a   d e l   e s t a d o   d e   L u a   ( l l a m a n d o   a   l o s   c o r r e s p o n d i e n t e s   d e   r e c o l e c c i  n   d e   b a s u r a   m e t a m e t h o d s ,   s i   l o s   h u b i e r e )   y   l i b e r a 
 
 t o d a   l a   m e m o r i a   d i n  m i c a   u s a d a   p o r   e s t e   e s t a d o .   H a y   v a r i a s   p l a t a f o r m a s ,   p u e d e   q u e   n o   n e c e s i t e   l l a m a r   a   e s t a   f u n c i  n ,   y a   q u e   e n   t o d o s   l o s   r e c u r s o s 
 
 s o n   n a t u r a l m e n t e   l i b e r a   c u a n d o   e l   p r o g r a m a   d e   a c o g i d a   t e r m i n a .   P o r   o t r a   p a r t e ,   l o s   p r o g r a m a s   d e   l a r g a   d u r a c i  n ,   c o m o   u n   d e m o n i o   o   u n a   w e b 
 
 s e r v i d o r ,   p u e d e   s e r   q u e   n e c e s i t e   p a r a   l i b e r a r   l o s   e s t a d o s   e n   c u a n t o   n o   s o n   n e c e s a r i o s ,   j u e   E v i t e   d e m a s i a d o   g r a n d e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c o n c a t 
 
 [ N ,   A ,   E ] 
 
 
 
 v o i d   l u a _ c o n c a t   ( l u a _ S t a t e   L   * ,   n   i n t ) ; 
 
 C o n c a t e n a   l o s   v a l o r e s   n   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a ,   l e s   a p a r e c e ,   y   d e j a   e l   r e s u l t a d o   e n   l a   p a r t e   s u p e r i o r .   S i   n   e s   1 ,   e l   r e s u l t a d o   e s 
 
 e l    n i c o   v a l o r   e n   l a   p i l a   ( e s   d e c i r ,   l a   f u n c i  n   n o   h a c e   n a d a ) ,   s i   n   e s   0 ,   e l   r e s u l t a d o   e s   l a   c a d e n a   v a c  a . 
 
 L a   c o n c a t e n a c i  n   s e   r e a l i z a   s i g u i e n d o   l a   s e m  n t i c a   u s u a l   d e   L u a   ( v  a s e      2 . 5 . 4 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c p c a l l 
 
 [ - 0 ,   +   ( 0   |   1 )   - ] 
 
 
 
 i n t   l u a _ c p c a l l   ( l u a _ S t a t e   L   * ,   l u a _ C F u n c t i o n   f u n c i  n ,   v o i d   *   u d ) ; 
 
 L l a m a   a   l a   f u n c i  n   f u n c   C   e n   m o d o   p r o t e g i d o .   f u n c i  n   c o m i e n z a   c o n   u n   s o l o   e l e m e n t o   e n   l a   p i l a   d e   S U ,   u n   c o n j u n t o   d e   d a t o s   d e   u s u a r i o s   d e   l u z   q u e   c o n t i e n e 
 
 u d .   E n   c a s o   d e   e r r o r e s ,   l u a _ c p c a l l   d e v u e l v e   l o s   c  d i g o s   d e   e r r o r   d e   i g u a l   l u a _ p c a l l ,   m  s   e l   o b j e t o   d e   e r r o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a ; 
 
 d e   o t r a   f o r m a ,   s e   d e v u e l v e   c e r o ,   y   n o   c a m b i a   l a   p i l a .   T o d o s   l o s   v a l o r e s   d e v u e l t o s   p o r   f u n c i o n e s   s e   d e s c a r t a n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ c r e a t e t a b l e 
 
 [ - 0 ,   1 ,   M ] ; 
 
 
 
 v o i d   l u a _ c r e a t e t a b l e   ( l u a _ S t a t e   L   * ,   N a r r ,   i n t   N R E C ) ; 
 
 C r e a   u n a   n u e v a   t a b l a   v a c  a   y   l o   e m p u j a   e n   l a   p i l a .   L a   n u e v a   t a b l a   t i e n e   e s p a c i o   p a r a   p r e - a s i g n a d o s   e l e m e n t o s   d e   l a   m a t r i z   y   N a r r 
 
 N R E C   m a t r i z   n o - e l e m e n t o s .   E s t a   a s i g n a c i  n   d e   p r e - e s    t i l   c u a n d o   s e   s a b e   e x a c t a m e n t e   c u  n t o s   e l e m e n t o s   d e   l a   t a b l a   v a   a   t e n e r . 
 
 D e   o t r o   m o d o   s e   p u e d e   u t i l i z a r   l a   f u n c i  n   d e   l u a _ n e w t a b l e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ d u m p 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 i n t   l u a _ d u m p   ( l u a _ S t a t e   L   * ,   e s c r i t o r   l u a _ W r i t e r ,   v o i d   *   d a t a ) ; 
 
 V u e l c a   u n a   f u n c i  n   c o m o   u n   t r o z o   b i n a r i o .   R e c i b e   u n a   f u n c i  n   L u a   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   y   p r o d u c e   u n   t r o z o   b i n a r i a   d e   q u e ,   s i 
 
 c a r g a d o   d e   n u e v o ,   l o s   r e s u l t a d o s   e n   u n a   f u n c i  n   e q u i v a l e n t e   a   l a   u n a   D u m p e d .   Y a   q u e   p r o d u c e   p a r t e s   d e   l a   p o r c i  n ,   l u a _ d u m p   l l a m a d a s 
 
 f u n c i  n   d e   e s c r i t u r a   ( v e r   l u a _ W r i t e r )   C o n   l o s   d a t o s   f a c i l i t a d o s   a   e s c r i b i r l o s . 
 
 
 
 E l   v a l o r   d e v u e l t o   e s   e l   c  d i g o   d e   e r r o r   d e v u e l t o   p o r   l a    l t i m a   l l a m a d a   a   l a   e s c r i t o r a ,   0   s i g n i f i c a   q u e   n o   h a y   e r r o r e s . 
 
 
 
 E s t a   f u n c i  n   n o   s e   s a l g a   d e   l a   f u n c i  n   L u a   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ e q u a l 
 
 [ - 0 ,   0 ,   e ] 
 
 
 
 i n t   l u a _ e q u a l   ( l u a _ S t a t e   L   * ,   i n t    n d i c e 1 ,    n d i c e 2   i n t ) ; 
 
 D e v u e l v e   1   s i   l o s   d o s   v a l o r e s   d e   l o s    n d i c e s   a c e p t a b l e s   y   i n d e x 1   i n d e x 2   s o n   i g u a l e s ,   A   r a  z   d e   l a   s e m  n t i c a   d e   l a   L u a   = = 
 
 O p e r a d o r   ( e s   d e c i r ,   p u e d e   l l a m a r   a   m e t a m e t h o d s ) .   O t r o s   r e n d i m i e n t o s   s a b i o s   0   T a m b i  n   r e t o r n a   0   s i   a l g u n o   d e   l o s    n d i c e s   n o   e s   v  l i d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ e r r o r 
 
 [ - 1 ,   0 ,   v ] 
 
 
 
 l u a _ e r r o r   i n t   ( l u a _ S t a t e   L   * ) ; 
 
 G e n e r a   u n   e r r o r   L u a .   E l   m e n s a j e   d e   e r r o r   ( E n   r e a l i d a d   q u e   p u e d e   s e r   u n   v a l o r   L u a   d e   c u a l q u i e r   t i p o )   d e b e n   e s t a r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a .   E s t e 
 
 l a   f u n c i  n   h a c e   u n   s a l t o   d e   l o n g i t u d ,   y   e l   t a n t o   n o   v u e l v e   n u n c a .   ( V e a   l a   l u a L _ e r r o r ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g c 
 
 [ - 0 ,   0 ,   e ] 
 
 
 
 i n t   l u a _ g c   ( l u a _ S t a t e   L   * ,   i n t   l o   q u e ,   l o s   d a t o s   i n t ) ; 
 
 C o n t r o l a   e l   r e c o l e c t o r   d e   b a s u r a . 
 
 
 
 E s t a   f u n c i  n   r e a l i z a   v a r i a s   t a r e a s ,   D e   a c u e r d o   c o n   e l   v a l o r   d e l   p a r  m e t r o   l o : 
 
 
 
 L U A _ G C S T O P :   p a r a   e l   r e c o l e c t o r   d e   b a s u r a . 
 
 L U A _ G C R E S T A R T :   R e i n i c i a   e l   r e c o l e c t o r   d e   b a s u r a . 
 
 L U A _ G C C O L L E C T :   r e a l i z a   u n   c i c l o   c o m p l e t o   d e   r e c o g i d a   d e   b a s u r a . 
 
 L U A _ G C C O U N T :   d e v u e l v e   l a   c a n t i d a d   d e   m e m o r i a   a c t u a l   ( e n   K b y t e s )   e n   u s o   p o r   L u a . 
 
 L U A _ G C C O U N T B :   d e v u e l v e   e l   r e s t o   d e   d i v i d i r   l a   c a n t i d a d   a c t u a l   d e   b y t e s   d e   m e m o r i a   e n   u s o   p o r   L u a   p o r   1 0 2 4 . 
 
 L U A _ G C S T E P :   r e a l i z a   u n   p a s o   i n c r e m e n t a l   d e   r e c o l e c c i  n   d e   b a s u r a .   E l   p a s o   " t a m a  o "   e s   c o n t r o l a d o   p o r   l o s   d a t o s   ( v a l o r e s   m a y o r e s   s i g n i f i c a n 
 
 m  s   p a s o s )   e n   u n a   f o r m a   n o   e s p e c i f i c a d a .   S i   u s t e d   d e s e a   c o n t r o l a r   e l   t a m a  o   d e l   p a s o   q u e   e x p e r i m e n t a l m e n t e   d e b e   a j u s t a r   e l   v a l o r   d e   l o s   d a t o s .   L a 
 
 f u n c i  n   d e v u e l v e   1   s i   e l   p a s o   d e   t e r m i n a r   u n   c i c l o   d e   r e c o l e c c i  n   d e   b a s u r a . 
 
 L U A _ G C S E T P A U S E :   l o s   c o n j u n t o s   d e   d a t o s   c o m o   e l   n u e v o   v a l o r   p a r a   l a   p a u s a   d e l   c o l e c t o r   ( v  a s e      2 . 1 0 ) .   L a   f u n c i  n   d e v u e l v e   e l   a n t e r i o r 
 
 v a l o r   d e   l a   p a u s a . 
 
 L U A _ G C S E T S T E P M U L :   l o s   c o n j u n t o s   d e   d a t o s   c o m o   e l   n u e v o   v a l o r   p a r a   e l   m u l t i p l i c a d o r   d e   p a s o   d e l   c o l e c t o r   ( v  a s e      2 . 1 0 ) .   L a   f u n c i  n   d e v u e l v e   e l 
 
 v a l o r   a n t e r i o r   d e l   m u l t i p l i c a d o r   p a s o . 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t a l l o c f 
 
 [ - 0 ,   0 ,   - ] 
 
 
 
 l u a _ A l l o c   l u a _ g e t a l l o c f   ( l u a _ S t a t e   L   * ,   * *   v a c  o   u d ) ; 
 
 D e v u e l v e   l a   f u n c i  n   d e   a s i g n a c i  n   d e   m e m o r i a   d e   u n   d e t e r m i n a d o   E s t a d o .   S i   u d   N O   E S   N U L O ,   l a s   t i e n d a s   d e   L u a   e n   *   u d   e l   p u n t e r o   o p a c o   P a s a d o   j u e 
 
 l u a _ n e w s t a t e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t f e n v 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ g e t f e n v   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 I n s e r t a   e n   l a   p i l a   d e   l a   t a b l a   d e   e n t o r n o   d e l   v a l o r   e n   e l    n d i c e   d a d o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t f i e l d 
 
 [ - 0 ,   1 ,   E ] 
 
 
 
 v o i d   l u a _ g e t f i e l d   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ,   c o n s t   c h a r   *   k ) ; 
 
 I n s e r t a   e n   l a   p i l a   e l   v a l o r   t   [ k ] ,   M   t   e s   e l   v a l o r   e n   e l    n d i c e   v  l i d o   d a d o .   C o m o   e n   L u a ,   e s t a   f u n c i  n   p u e d e   p r o v o c a r   u n a 
 
 m e t a - m  t o d o   p a r a   e l   "  n d i c e "   d e l   e v e n t o   ( v  a s e      2 . 8 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t g l o b a l 
 
 [ - 0 ,   1 ,   E ] 
 
 
 
 v o i d   l u a _ g e t g l o b a l   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   n o m b r e ) ; 
 
 S e   e m p u j a   e n   l a   p i l a   e l   v a l o r   d e l   n o m b r e   g l o b a l .   S e   d e f i n e   c o m o   u n a   m a c r o : 
 
 
 
           #   D e f i n i r   l u a _ g e t g l o b a l   ( L ,   S )   l u a _ g e t f i e l d   ( L   L U A _ G L O B A L S I N D E X ,   s ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t m e t a t a b l e 
 
 [ - 0 ,   +   ( 0   |   1 )   - ] 
 
 
 
 i n t   l u a _ g e t m e t a t a b l e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 I n s e r t a   e n   l a   p i l a   d e   l a   t a b l a   d e   m e t a d a t o s   d e l   v a l o r   e n   e l    n d i c e   e s p e c i f i c a d o   a c e p t a b l e .   S i   e l    n d i c e   n o   e s   v  l i d a ,   o   s i   e l   v a l o r 
 
 n o   t i e n e   u n a   t a b l a   d e   m e t a d a t o s ,   l a   f u n c i  n   d e v u e l v e   0   y   e m p u j a   a   n a d a   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t t a b l e 
 
 [ - 1 ,   1 ,   E ] 
 
 
 
 l u a _ g e t t a b l e   v o i d   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 S e   e m p u j a   e n   l a   p i l a   e l   v a l o r   t   [ k ] ,   H   t   e s   e l   v a l o r   e n   e l    n d i c e   D a d o   v  l i d o   y   k   e s   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e l 
 
 p i l a . 
 
 
 
 E s t a   f u n c i  n   a p a r e c e   l a   c l a v e   d e   l a   p i l a   ( p o n i e n d o   e l   v a l o r   r e s u l t a n t e   d e   l o s   S T I   e n   s u   l u g a r ) .   C o m o   e n   L u a ,   e s t a   f u n c i  n   p u e d e   d e s e n c a d e n a r 
 
 u n   m e t a - m  t o d o   p a r a   e l   "  n d i c e "   d e l   e v e n t o   ( v  a s e      2 . 8 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t t o p 
 
 [ - 0 ,   0 ,   - ] 
 
 
 
 l u a _ g e t t o p   i n t   ( l u a _ S t a t e   L   * ) ; 
 
 D e v u e l v e   e l    n d i c e   d e l   e l e m e n t o   s u p e r i o r   d e   l a   p i l a .   D e b i d o   a   q u e   l o s    n d i c e s   c o m i e n z a n   a   p a r t i r   d e   1 ,   e s t e   r e s u l t a d o   e s   i g u a l   a l   n  m e r o   d e 
 
 e l e m e n t o s   d e   l a   p i l a   ( y   p o r   l o   q u e   0   s i g n i f i c a   u n a   p i l a   v a c  a ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i n s e r t 
 
 [ - 1 ,   1 ,   - ] 
 
 
 
 v o i d   l u a _ i n s e r t   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 M u e v e   e l   e l e m e n t o   s u p e r i o r   e n   e l    n d i c e   v  l i d o   d a d o ,   d e s p l a z a n d o   a   l o s   e l e m e n t o s   p o r   e n c i m a   d e   e s t e    n d i c e   p a r a   a b r i r   e l   e s p a c i o .   N o   p u e d e   s e r   l l a m a d o 
 
 c o n   u n    n d i c e   d e   s e u d o - ,   p o r q u e   u n   p s e u d o -  n d i c e   n o   e s   u n a   p o s i c i  n   r e a l   d e   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ I n t e g e r 
 
 t y p e d e f   l u a _ I n t e g e r   p t r d i f f _ t ; 
 
 E l   t i p o   d e   l a s   u t i l i z a d a s   p o r   l a   A P I   d e   L u a   p a r a   r e p r e s e n t a r   l o s   v a l o r e s   i n t e g r a l e s . 
 
 
 
 P o r   d e f e c t o   e s   u n   p t r d i f f _ t ,   q u e   s u e l e   s e r   m  s   g r a n d e   e l   t i p o   d e   f i r m a   i n t e g r a n t e   d e   l a   m  q u i n a   s e   e n c a r g a   d e   " c o m o d i d a d " . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s b o o l e a n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s b o o l e a n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   t i e n e   t i p o   b o o l e a n o ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s c f u n c t i o n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s c f u n c t i o n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 R e t o r n a   1   s i   e l   v a l o r   e n   e l    n d i c e   a c e p t a b l e   e s   d a d a   u n a   f u n c i  n   d e   C ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s f u n c t i o n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s f u n c t i o n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 R e t o r n a   1   s i   e l   v a l o r   e n   e l    n d i c e   a c e p t a b l e   e s   d a d a   u n a   f u n c i  n   ( C   o   L u a ) ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s l i g h t u s e r d a t a 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s l i g h t u s e r d a t a   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   u n   u s e r d a t a   l i g e r o   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s n i l 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s n i l   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   c e r o ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s n o n e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s n o n e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l    n d i c e   d a d o   a c e p t a b l e   n o   e s   v  l i d a   ( e s   d e c i r ,   s e   r e f i e r e   a   u n   e l e m e n t o   f u e r a   d e   l a   p i l a   a c t u a l ) ,   y   0 
 
 d e   l o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s n o n e o r n i l 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s n o n e o r n i l   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l    n d i c e   d a d o   a c e p t a b l e   n o   e s   v  l i d a   ( e s   d e c i r ,   s e   r e f i e r e   a   u n   e l e m e n t o   f u e r a   d e   l a   p i l a   a c t u a l )   o   s i   e l 
 
 v a l o r   e n   e s t e    n d i c e   e s   i g u a l   a   c e r o ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s n u m b e r 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s n u m b e r   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   u n   n  m e r o   o   u n a   c a d e n a   c o n v e r t i b l e   a   u n   n  m e r o ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s s t r i n g 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s s t r i n g   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 R e t o r n a   1   s i   e l   v a l o r   e n   e l    n d i c e   a c e p t a b l e   e s   d a d a   u n a   c a d e n a   o   u n   n  m e r o   ( q u e   s i e m p r e   e s   c o n v e r t i b l e   e n   u n a   c a d e n a ) ,   y 
 
 0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s t a b l e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s t a b l e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 R e t o r n a   1   s i   e l   v a l o r   e n   e l    n d i c e   a c e p t a b l e   e s   d a d a   u n a   t a b l a ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s t h r e a d 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s t h r e a d   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   u n   h i l o ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ i s u s e r d a t a 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ i s u s e r d a t a   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   u n   u s e r d a t a   ( c o m p l e t o   o   l a   l u z ) ,   y   0   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ l e s s t h a n 
 
 [ - 0 ,   0 ,   e ] 
 
 
 
 i n t   l u a _ l e s s t h a n   ( l u a _ S t a t e   L   * ,   i n t    n d i c e 1 ,    n d i c e 2   i n t ) ; 
 
 D e v u e l v e   1   s i   e l   v a l o r   e n    n d i c e 1    n d i c e   a c e p t a b l e   e s   m e n o r   q u e   e l   v a l o r   e n   e l    n d i c e   a c e p t a b l e   i n d e x 2 ,   s i g u i e n d o   e l 
 
 s e m  n t i c a   d e   L u a   e l   o p e r a d o r   < ( e s   d e c i r ,   p u e d e   l l a m a r   a   m e t a m e t h o d s ) .   D e   l o   c o n t r a r i o   d e v u e l v e   0 .   T a m b i  n   d e v u e l v e   0   s i   c u a l q u i e r a   d e   l o s    n d i c e s 
 
 n o   e s   v  l i d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ l o a d 
 
 [ 1   - 0 ,   - ] 
 
 
 
 i n t   l u a _ l o a d   ( l u a _ S t a t e   L   * , 
 
                             l u a _ R e a d e r   l e c t o r , 
 
                             l o s   d a t o s   v o i d   * , 
 
                             c o n s t   c h a r   *   c h u n k n a m e ) ; 
 
 C a r g a   u n   t r o z o   L u a .   S i   n o   e x i s t e n   e r r o r e s ,   l u a _ l o a d   e m p u j a   e l   t r o z o   c o m p i l a d o   c o m o   u n a   f u n c i  n   L u a   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 D e   l o   c o n t r a r i o ,   e m p u j a   u n   m e n s a j e   d e   e r r o r .   L o s   v a l o r e s   d e   r e t o r n o   d e   l u a _ l o a d   s o n   l o s   s i g u i e n t e s : 
 
 
 
 0 :   n o   h a y   e r r o r e s ; 
 
 L U A _ E R R S Y N T A X :   e r r o r   d e   s i n t a x i s   d u r a n t e   l a   p r e c o m p i l a c i  n ; 
 
 L U A _ E R R M E M :   E r r o r   d e   a s i g n a c i  n   d e   m e m o r i a . 
 
 E s t a   f u n c i  n   s  l o   s e   c a r g a   u n   t r o z o ,   s i n o   q u e   n o   l o   e j e c u t e . 
 
 
 
 l u a _ l o a d   d e t e c t a   a u t o m  t i c a m e n t e   s i   e l   f r a g m e n t o   e s   u n   t e x t o   o   b i n a r i o ,   y   l o   c a r g a   e n   c o n s e c u e n c i a   ( v  a s e   L u a c   p r o g r a m a ) . 
 
 
 
 L a   f u n c i  n   d e   l u a _ l o a d   u t i l i z a   u n a   f u n c i  n   d e   l e c t u r a   p r o p o r c i o n a d a   p o r   e l   u s u a r i o   a   l e e r   e l   f r a g m e n t o   ( v e r   l u a _ R e a d e r ) .   E l   a r g u m e n t o   d e   d a t o s   e s   u n 
 
 v a l o r   o p a c o   p a s a   a   l a   f u n c i  n   l e c t o r . 
 
 
 
 E l   a r g u m e n t o   c h u n k n a m e   d a   u n   n o m b r e   a l   f r a g m e n t o ,   q u e   s e   u t i l i z a   p a r a   m e n s a j e s   d e   e r r o r   y   e n   l a   i n f o r m a c i  n   d e   d e p u r a c i  n   ( v  a s e      3 . 8 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ n e w s t a t e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ S t a t e   *   l u a _ n e w s t a t e   ( l u a _ A l l o c   f ,   v o i d   *   u d ) ; 
 
 C r e a   u n   n u e v o   e s t a d o   i n d e p e n d i e n t e .   D e v u e l v e   N U L L   s i   n o   s e   p u e d e   c r e a r   e l   e s t a d o   ( d e b i d o   a   l a   f a l t a   d e   m e m o r i a ) .   E l   a r g u m e n t o   f   e s   e l 
 
 f u n c i  n   d e   a s i g n a d o r ;   L u a   h a c e   t o d a   l a   a s i g n a c i  n   d e   m e m o r i a   p a r a   e s t e   e s t a d o   a   t r a v  s   d e   e s t a   f u n c i  n .   E l   s e g u n d o   a r g u m e n t o ,   u d ,   e s   u n 
 
 p u n t e r o   o p a c o   q u e   L u a   s i m p l e m e n t e   p a s a   a   l a   i m p u t a c i  n   e n   c a d a   l l a m a d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ n e w t a b l e 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   l u a _ n e w t a b l e   ( l u a _ S t a t e   *   L ) ; 
 
 C r e a   u n a   n u e v a   t a b l a   v a c  a   y   l o   e m p u j a   e n   l a   p i l a .   E s   e q u i v a l e n t e   a   l u a _ c r e a t e t a b l e   ( L ,   0 ,   0 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ n e w t h r e a d 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 l u a _ S t a t e   *   l u a _ n e w t h r e a d   ( l u a _ S t a t e   *   L ) ; 
 
 C r e a   u n   n u e v o   t e m a ,   q u e   e m p u j a   e n   l a   p i l a ,   y   d e v u e l v e   u n   p u n t e r o   a   u n a   l u a _ S t a t e   q u e   r e p r e s e n t a   e s t e   n u e v o   h i l o .   E l   n u e v o 
 
 E s t a d o   d e v u e l t o   p o r   e s t a   f u n c i  n   c o m p a r t e   c o n   e l   e s t a d o   o r i g i n a l   d e   t o d o s   l o s   o b j e t o s   g l o b a l e s   ( c o m o   t a b l a s ) ,   p e r o   t i e n e   u n   e f e c t o   i n d e p e n d i e n t e 
 
 e j e c u c i  n   d e   l a   p i l a . 
 
 
 
 N o   h a y   n i n g u n a   f u n c i  n   e x p l  c i t a   p a r a   c e r r a r   o   d e s t r u i r   a   u n   h i l o .   T e m a s   e s t  n   s u j e t o s   a   l a   r e c o l e c c i  n   d e   b a s u r a ,   c o m o   c u a l q u i e r   o t r o   o b j e t o   d e   L u a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ n e w u s e r d a t a 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   *   l u a _ n e w u s e r d a t a   ( l u a _ S t a t e   L   * ,   s i z e _ t   s i z e ) ; 
 
 E s t a   f u n c i  n   a s i g n a   u n   n u e v o   b l o q u e   d e   m e m o r i a   c o n   e l   t a m a  o   d a d o ,   e m p u j a   e n   l a   p i l a   u n   n u e v o   u s e r d a t a   c o m p l e t o   c o n   e l   b l o q u e 
 
 a b o r d a r ,   y   d e v u e l v e   e s t a   d i r e c c i  n . 
 
 
 
 U s e r d a t a   r e p r e s e n t a n   l o s   v a l o r e s   d e   C   e n   L u a .   U n   u s e r d a t a   c o m p l e t o   r e p r e s e n t a   u n   b l o q u e   d e   m e m o r i a .   S e   t r a t a   d e   u n   o b j e t o   ( c o m o   u n a   t a b l a ) :   d e b e 
 
 c r e a r l o ,   p u e d e   t e n e r   s u   p r o p i a   m e t a t a b l a ,   y   s e   p u e d e   d e t e c t a r   c u a n d o   s e   e s t    r e c o g i e n d o .   U n   u s e r d a t a   c o m p l e t o   s  l o   e s   i g u a l   a 
 
 e n   s    m i s m o   ( e n   l a   i g u a l d a d   d e   c r u d o ) . 
 
 
 
 C u a n d o   L u a   r e c o g e   u n   u s e r d a t a   c o m p l e t o   c o n   m e t a m  t o d o   g c ,   L u a   l l a m a   a   l a   m e t a m  t o d o   y   m a r c a   e l   u s e r d a t a   c o m o   f u e   a p r o b a d o .   C u a n d o 
 
 e s t e   u s e r d a t a   s e   r e c o g e   d e   n u e v o   y   L u a   l i b e r a   l a   m e m o r i a   c o r r e s p o n d i e n t e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ n e x t 
 
 [ - 1 ,   +   ( 2   |   0 ) ,   e ] 
 
 
 
 i n t   l u a _ n e x t   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 A p a r e c e   u n a   l l a v e   d e   l a   p i l a ,   e   i n s e r t a   u n   p a r   d e   c l a v e s   y   v a l o r e s   d e   l a   t a b l a   e n   e l    n d i c e   d a d o   ( e l   " s i g u i e n t e "   p a r e j a   d e s p u  s   d e   l a   d a d a 
 
 c l a v e ) .   S i   n o   h a y   m  s   e l e m e n t o s   e n   l a   t a b l a   y   d e s p u  s   r e g r e s a r   a l   l u a _ n e x t   0   ( y   e m p u j a   a   n a d a ) . 
 
 
 
 U n   t  p i c o   r e c o r r i d o   e s   e l   s i g u i e n t e : 
 
 
 
           /   *   T a b l a   e s t    e n   l a   p i l a   e n   ' t '    n d i c e   *   / 
 
           l u a _ p u s h n i l   ( L ) ;   /   *   p r i m e r a   c l a v e   *   / 
 
           m i e n t r a s   q u e   ( l u a _ n e x t   ( L ,   t ) !   =   0 )   { 
 
               /   *   U t i l i z a   " c l a v e "   ( e n   e l    n d i c e   - 2 )   y   e l   " v a l o r "   ( e n   e l    n d i c e   - 1 )   *   / 
 
               p r i n t f   ( " %   s   - %   s   \   n " , 
 
                             l u a _ t y p e n a m e   ( L ,   l u a _ t y p e   ( L ,   - 2 ) ) , 
 
                             l u a _ t y p e n a m e   ( L ,   l u a _ t y p e   ( L ,   - 1 ) ) ) ; 
 
               /   *   E l i m i n a   e l   " v a l o r " ,   m a n t i e n e   ' c l a v e '   p a r a   l a   s i g u i e n t e   i t e r a c i  n   *   / 
 
               l u a _ p o p   ( L ,   1 ) ; 
 
           } 
 
 
 
 M i e n t r a s   s e   a d e n t r a b a   e n   u n a   m e s a ,   n o   l l a m e   a   l u a _ t o l s t r i n g   d i r e c t a m e n t e   e n   u n a   l l a v e ,   a   m e n o s   q u e   s e p a   q u e   l a   c l a v e   e s   e n   r e a l i d a d   u n a   c a d e n a . 
 
 R e c o r d e m o s   q u e   l o s   c a m b i o s   l u a _ t o l s t r i n g   e l   v a l o r   e n   e l    n d i c e   d a d o ,   l o   q u e   c o n f u n d e   a   l a   s i g u i e n t e   l l a m a d a   a   l u a _ n e x t . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ N u m b e r 
 
 l u a _ N u m b e r   d o b l e   t y p e d e f ; 
 
 E l   t i p o   d e   n  m e r o s   e n   L u a .   D e   f o r m a   p r e d e t e r m i n a d a ,   e s   e l   d o b l e ,   p e r o   e s o   p u e d e   c a m b i a r   e n   l u a c o n f . h . 
 
 
 
 A   t r a v  s   d e l   a r c h i v o   d e   c o n f i g u r a c i  n   q u e   p u e d e   c a m b i a r   L u a   p a r a   o p e r a r   c o n   o t r o   t i p o   d e   n  m e r o s   ( p o r   e j e m p l o ,   f l o a t   o   l o n g ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ o b j l e n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 s i z e _ t   l u a _ o b j l e n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   l a   " l o n g i t u d "   d e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e :   p a r a   l a s   c a d e n a s ,   e s t a   e s   l a   l o n g i t u d   d e   l a   c a d e n a ,   p a r a   l a s   t a b l a s ,   e s t a 
 
 e s   e l   r e s u l t a d o   d e l   o p e r a d o r   l o n g i t u d   ( " # " ) ;   p a r a   u s e r d a t a ,   e s t e   e s   e l   t a m a  o   d e l   b l o q u e   d e   m e m o r i a   a s i g n a d a   p a r a   e l 
 
 u s e r d a t a ;   p a r a   o t r o s   v a l o r e s ,   e s   0 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p c a l l 
 
 [ -   ( N a r g s   +   1 ) ,   +   ( n r e s u l t s   |   1 ) ,   - ] 
 
 
 
 i n t   l u a _ p c a l l   ( l u a _ S t a t e   L   * ,   i n t   n a r g s ,   i n t   n r e s u l t s ,   i n t   e r r f u n c ) ; 
 
 L l a m a   a   u n a   f u n c i  n   e n   m o d o   p r o t e g i d o . 
 
 
 
 A m b o s   n a r g s   y   n r e s u l t s   t i e n e n   e l   m i s m o   s i g n i f i c a d o   q u e   e n   l u a _ c a l l .   S i   n o   h a y   n i n g  n   e r r o r   d u r a n t e   l a   l l a m a d a ,   s e   c o m p o r t a   l u a _ p c a l l 
 
 e x a c t a m e n t e   i g u a l   q u e   l u a _ c a l l .   S i n   e m b a r g o ,   s i   h a y   a l g  n   e r r o r ,   l u a _ p c a l l   a t r a p a ,   e m p u j a   u n   s o l o   v a l o r   e n   l a   p i l a   ( e l   e r r o r 
 
 m e n s a j e ) ,   y   d e v u e l v e   u n   c  d i g o   d e   e r r o r .   A l   i g u a l   q u e   l u a _ c a l l ,   l u a _ p c a l l   s i e m p r e   e l i m i n a   l a   f u n c i  n   y   s u s   a r g u m e n t o s   d e   l a   p i l a . 
 
 
 
 S i   e r r f u n c   e s   0 ,   e n t o n c e s   e l   m e n s a j e   d e   e r r o r   d e v u e l t o   e n   l a   p i l a   e s   e x a c t a m e n t e   e l   m e n s a j e   d e   e r r o r   o r i g i n a l .   D e   l o   c o n t r a r i o ,   e s   e r r f u n c 
 
 e l    n d i c e   d e   p i l a   d e   u n a   f u n c i  n   d e   c o n t r o l a d o r   d e   e r r o r e s .   ( E n   l a   i m p l e m e n t a c i  n   a c t u a l ,   e s t e    n d i c e   n o   p u e d e   s e r   u n   p s e u d o -  n d i c e . )   E n   e l   c a s o 
 
 d e   l o s   e r r o r e s   d e   e j e c u c i  n ,   e s t a   f u n c i  n   s e r    l l a m a d a   c o n   e l   m e n s a j e   d e   e r r o r   y   s u   v a l o r   d e   r e t o r n o   s e r    e l   m e n s a j e   q u e   s e   o b t i e n e   e n   l a 
 
 l a   p i l a   l u a _ p c a l l . 
 
 
 
 P o r   l o   g e n e r a l ,   l a   f u n c i  n   d e   c o n t r o l a d o r   d e   e r r o r e s   s e   u t i l i z a   p a r a   a g r e g a r   m  s   i n f o r m a c i  n   d e   d e p u r a c i  n   e n   e l   m e n s a j e   d e   e r r o r ,   c o m o   u n a   r e t r a z a   d e   l a   p i l a . 
 
 D i c h a   i n f o r m a c i  n   n o   p u e d e   s e r   r e c o g i d a   d e s p u  s   d e l   r e g r e s o   d e   l u a _ p c a l l ,   y a   q u e   p a r a   e n t o n c e s   l a   p i l a   s e   h a   d e s e n r o l l a d o . 
 
 
 
 L a   f u n c i  n   l u a _ p c a l l   d e v u e l v e   0   e n   c a s o   d e    x i t o   o   u n o   d e   l o s   s i g u i e n t e s   c  d i g o s   d e   e r r o r   ( d e f i n i d o   e n   l u a . h ) : 
 
 
 
 L U A _ E R R R U N :   u n   e r r o r   d e   e j e c u c i  n . 
 
 L U A _ E R R M E M :   E r r o r   d e   a s i g n a c i  n   d e   m e m o r i a .   P a r a   e s t e   t i p o   d e   e r r o r e s ,   L u a   n o   l l a m a   a   l a   f u n c i  n   d e   c o n t r o l a d o r   d e   e r r o r e s . 
 
 L U A _ E R R E R R :   e r r o r   a l   e j e c u t a r   l a   f u n c i  n   d e   c o n t r o l a d o r   d e   e r r o r e s . 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p o p 
 
 [ - N ,   0 ,   - ] 
 
 
 
 v o i d   l u a _ p o p   ( l u a _ S t a t e   L   * ,   i n t   n ) ; 
 
 P o p s   n   e l e m e n t o s   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h b o o l e a n 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h b o o l e a n   ( l u a _ S t a t e   L   * ,   i n t   b ) ; 
 
 E m p u j a   u n   v a l o r   b o o l e a n o   c o n   v a l o r   b   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h c c l o s u r e 
 
 [ - N ,   1 ,   m ] 
 
 
 
 v o i d   l u a _ p u s h c c l o s u r e   ( l u a _ S t a t e   L   * ,   l u a _ C F u n c t i o n   f n ,   i n t   n ) ; 
 
 I n s e r t a   u n   n u e v o   c i e r r e   d e   C   e n   l a   p i l a . 
 
 
 
 C u a n d o   u n a   f u n c i  n   C   s e   c r e a ,   e s   p o s i b l e   a s o c i a r   a l g u n o s   v a l o r e s   c o n   e l l a ,   c r e a n d o   a s    u n   c i e r r e   C   ( v  a s e      3 , 4 ) ;   e s t o s 
 
 L o s   v a l o r e s   s o n   e n t o n c e s   a c c e s i b l e s   a   l a   f u n c i  n   c u a n d o   s e   l e   l l a m a .   P a r a   a s o c i a r   v a l o r e s   c o n   u n a   f u n c i  n   d e   C ,   e n   p r i m e r   l u g a r   l o s   v a l o r e s 
 
 d e b e   s e r   i n s e r t a d o   e n   l a   p i l a   ( c u a n d o   h a y   v a r i o s   v a l o r e s ,   e l   p r i m e r   v a l o r   e s   e m p u j a d o   e n   p r i m e r   l u g a r ) .   E n t o n c e s   e s   l u a _ p u s h c c l o s u r e 
 
 l l a m a d o s   a   c r e a r   e   i m p u l s a r   l a   f u n c i  n   d e   C   e n   l a   p i l a ,   c o n   e l   a r g u m e n t o   n   c o n t a r   c u  n t o s   v a l o r e s   d e b e n   a s o c i a r s e 
 
 c o n   l a   f u n c i  n .   l u a _ p u s h c c l o s u r e   t a m b i  n   a p a r e c e   e s t o s   v a l o r e s   d e   l a   p i l a . 
 
 
 
 E l   v a l o r   m  x i m o   d e   n   e s   2 5 5 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h c f u n c t i o n 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   l u a _ p u s h c f u n c t i o n   ( l u a _ S t a t e   L   * ,   l u a _ C F u n c t i o n   f ) ; 
 
 E m p u j a   u n a   f u n c i  n   d e   C   e n   l a   p i l a .   E s t a   f u n c i  n   r e c i b e   u n   p u n t e r o   a   u n a   f u n c i  n   d e   C   y   e m p u j a   e n   l a   p i l a   u n   v a l o r   d e   L u a 
 
 d e l   t i p o   d e   f u n c i  n   q u e ,   c u a n d o   s e   l e   l l a m a ,   l l a m a   a   l a   f u n c i  n   C   c o r r e s p o n d i e n t e . 
 
 
 
 C u a l q u i e r   f u n c i  n   q u e   s e   r e g i s t r    e n   L u a   d e b e   s e g u i r   e l   p r o t o c o l o   c o r r e c t o   p a r a   r e c i b i r   s u s   p a r  m e t r o s   y   d e v o l v e r   s u s   r e s u l t a d o s   ( v  a s e 
 
 l u a _ C F u n c t i o n ) . 
 
 
 
 l u a _ p u s h c f u n c t i o n   s e   d e f i n e   c o m o   u n a   m a c r o : 
 
 
 
           #   D e f i n e   l u a _ p u s h c f u n c t i o n   ( L ,   f )   l u a _ p u s h c c l o s u r e   ( L ,   M ,   0 ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h f s t r i n g 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 c o n s t   c h a r   *   l u a _ p u s h f s t r i n g   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   f m t ,   . . . ) ; 
 
 I n s e r t a   e n   l a   p i l a   u n a   c a d e n a   c o n   f o r m a t o   y   d e v u e l v e   u n   p u n t e r o   a   e s t a   c a d e n a .   E s   s i m i l a r   a   l a   f u n c i  n   C   s p r i n t f ,   p e r o 
 
 t i e n e   a l g u n a s   d i f e r e n c i a s   i m p o r t a n t e s : 
 
 
 
 U s t e d   n o   t i e n e   q u e   a s i g n a r   e s p a c i o   p a r a   e l   r e s u l t a d o :   e l   r e s u l t a d o   e s   u n a   c a d e n a   d e   L u a   L u a   y   s e   e n c a r g a   d e   l a   a s i g n a c i  n   d e   m e m o r i a   ( y 
 
 c a n c e l a c i  n   d e   a s i g n a c i  n ,   a   t r a v  s   d e   l a   r e c o l e c c i  n   d e   b a s u r a ) . 
 
 E s p e c i f i c a d o r e s   d e   c o n v e r s i  n   s o n   m u y   r e s t r i n g i d o s .   N o   h a y   b a n d e r a s ,   a n c h o s ,   o   p r e c i s i o n e s .   E s p e c i f i c a d o r e s   d e   c o n v e r s i  n   p u e d e 
 
 s  l o   s e r   ' % % '   ( i n s e r t a   u n   ' % '   e n   l a   c a d e n a ) ,   ' %   s '   ( i n s e r t a   u n a   c a d e n a   t e r m i n a d a   e n   c e r o ,   s i n   r e s t r i c c i o n e s   d e   t a m a  o ) ,   ' %   f '   ( i n s e r t o s 
 
 u n   l u a _ N u m b e r ) ,   ' %   p '     ( i n s e r t a   u n   p u n t e r o   c o m o   u n   n  m e r o   h e x a d e c i m a l ) ,   ' %   d '   ( i n s e r t a   u n   i n t ) ,   y   ' %   c '   ( i n s e r t a   u n   i n t   c o m o   u n 
 
 d e   c a r a c t e r e s ) . 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h i n t e g e r 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h i n t e g e r   ( l u a _ S t a t e   L   * ,   l u a _ I n t e g e r   n ) ; 
 
 S e   e m p u j a   u n   n  m e r o   c o n   u n   v a l o r   d e   n   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h l i g h t u s e r d a t a 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h l i g h t u s e r d a t a   ( l u a _ S t a t e   L   * ,   v o i d   *   p ) ; 
 
 E m p u j a   u n   u s e r d a t a   l a   l u z   e n   l a   p i l a . 
 
 
 
 U s e r d a t a   r e p r e s e n t a n   l o s   v a l o r e s   d e   C   e n   L u a .   U n   u s e r d a t a   l u z   r e p r e s e n t a   u n   p u n t e r o .   S e   t r a t a   d e   u n   v a l o r   ( c o m o   u n   n  m e r o ) :   n o   s e   c r e a 
 
 q u e ,   n o   t i e n e   i n d i v i d u o   m e t a t a b l a ,   y   n o   s e   r e c o g i e r o n   ( y a   q u e   n u n c a   s e   c r e  ) .   A   l a   l u z   d a t o s   d e   u s u a r i o   e s   i g u a l   a   " c u a l q u i e r " 
 
 u s e r d a t a   l i g e r o   c o n   l a   m i s m a   d i r e c c i  n   C . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h l i t e r a l 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 a n u l a r   l u a _ p u s h l i t e r a l   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   s ) ; 
 
 E s t a   m a c r o   e s   e q u i v a l e n t e   a   l u a _ p u s h l s t r i n g ,   p e r o   p u e d e   s e r   u t i l i z a d o   s o l a m e n t e   c u a n d o   s   e s   u n a   c a d e n a   l i t e r a l .   E n   e s t o s   c a s o s ,   s e 
 
 p r o p o r c i o n a   a u t o m  t i c a m e n t e   l a   l o n g i t u d   d e   l a   c a d e n a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h l s t r i n g 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   l u a _ p u s h l s t r i n g   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   s ,   s i z e _ t   l e n ) ; 
 
 E m p u j a   l a   c a d e n a   a p u n t a d a   p o r   s   c o n   t a m a  o   l e n   e n   l a   p i l a .   L u a   h a c e   ( o   r e u t i l i z a )   u n a   c o p i a   i n t e r n a   d e   l a   c a d e n a   d a d a , 
 
 p o r   l o   q u e   l a   m e m o r i a   a   l a   s   p u e d e   s e r   l i b e r a d a   o   r e u t i l i z a d a   i n m e d i a t a m e n t e   d e s p u  s   d e   l a   f u n c i  n   d e v u e l v e .   L a   c a d e n a   p u e d e   c o n t e n e r   c e r o s   i n c r u s t a d o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h n i l 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h n i l   ( l u a _ S t a t e   *   L ) ; 
 
 S e   e m p u j a   u n   v a l o r   n u l o   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h n u m b e r 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h n u m b e r   ( l u a _ S t a t e   L   * ,   l u a _ N u m b e r   n ) ; 
 
 S e   e m p u j a   u n   n  m e r o   c o n   u n   v a l o r   d e   n   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h s t r i n g 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   l u a _ p u s h s t r i n g   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   s ) ; 
 
 E m p u j a   l a   c a d e n a   t e r m i n a d a   e n   c e r o   q u e   a p u n t e   s   e n   l a   p i l a .   L u a   h a c e   ( o   r e u t i l i z a )   u n a   c o p i a   i n t e r n a   d e   l o   d a d o 
 
 c a d e n a ,   p o r   l o   q u e   l a   m e m o r i a   a   l a   s   p u e d e   s e r   l i b e r a d a   o   r e u t i l i z a d a   i n m e d i a t a m e n t e   d e s p u  s   d e   l a   f u n c i  n   d e v u e l v e .   L a   c a d e n a   n o   p u e d e   c o n t e n e r 
 
 i n c r u s t a d o   c e r o s ,   s i n o   q u e   s e   s u p o n e   q u e   t e r m i n a   e n   e l   p r i m e r   c e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h t h r e a d 
 
 [ 1   - 0 ,   - ] 
 
 
 
 i n t   l u a _ p u s h t h r e a d   ( l u a _ S t a t e   *   L ) ; 
 
 S e   e m p u j a   e l   h i l o   r e p r e s e n t a d o   p o r   L   e n   l a   p i l a .   D e v u e l v e   1   s i   e s t e   h i l o   e s   e l   h i l o   c o n d u c t o r   d e   s u   e s t a d o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h v a l u e 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ p u s h v a l u e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 S e   e m p u j a   u n a   c o p i a   d e l   e l e m e n t o   e n   e l    n d i c e   v  l i d o   d a d o   e n   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ p u s h v f s t r i n g 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 c o n s t   c h a r   *   l u a _ p u s h v f s t r i n g   ( l u a _ S t a t e   L   * , 
 
                                                             c o n s t   c h a r   *   f m t , 
 
                                                             v a _ l i s t   a r g p ) ; 
 
 E q u i v a l e n t e   a   l u a _ p u s h f s t r i n g ,   s a l v o   q u e   r e c i b a   u n a   v a _ l i s t   e n   l u g a r   d e   u n   n  m e r o   v a r i a b l e   d e   a r g u m e n t o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r a w e q u a l 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ r a w e q u a l   ( l u a _ S t a t e   L   * ,   i n t    n d i c e 1 ,    n d i c e 2   i n t ) ; 
 
 D e v u e l v e   1   s i   l o s   d o s   v a l o r e s   d e   l o s    n d i c e s   a c e p t a b l e s   y   i n d e x 1   i n d e x 2   s o n   p r i m i t i v a m e n t e   i g u a l   ( e s   d e c i r ,   s i n   l l a m a r 
 
 m e t a m e t h o d s ) .   D e   l o   c o n t r a r i o   d e v u e l v e   0 .   T a m b i  n   r e t o r n a   0   s i   a l g u n o   d e   l o s    n d i c e s   n o   s o n   v  l i d o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r a w g e t 
 
 [ - 1 ,   1 ,   - ] 
 
 
 
 v o i d   l u a _ r a w g e t   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 S i m i l a r   a   l u a _ g e t t a b l e ,   p e r o   h a c e   u n   a c c e s o   e n   b r u t o   ( e s   d e c i r ,   s i n   m e t a m e t h o d s ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r a w g e t i 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ r a w g e t i   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ,   i n t   n ) ; 
 
 I n s e r t a   e n   l a   p i l a   e l   v a l o r   t   [ n ] ,   d o n d e   t   e s   e l   v a l o r   e n   e l    n d i c e   v  l i d o   d a d o .   E l   a c c e s o   e s   e n   b r u t o ,   e s   d e c i r ,   q u e   h a c e 
 
 n o   i n v o c a r   m e t a m e t h o d s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r a w s e t 
 
 [ - 2 ,   0 ,   m ] 
 
 
 
 v o i d   l u a _ r a w s e t   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 S i m i l a r   a   l u a _ s e t t a b l e ,   p e r o   h a c e   u n a   a s i g n a c i  n   e n   b r u t o   ( e s   d e c i r ,   s i n   m e t a m e t h o d s ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r a w s e t i 
 
 [ - 1 ,   0 ,   m ] 
 
 
 
 v o i d   l u a _ r a w s e t i   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ,   i n t   n ) ; 
 
 H a c e   e l   e q u i v a l e n t e   d e   t   [ n ]   =   v ,   d o n d e   t   e s   e l   v a l o r   e n   e l    n d i c e   d a d o   v  l i d a   y   V   e s   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e l 
 
 p i l a . 
 
 
 
 E s t a   f u n c i  n   e x t r a e   e l   v a l o r   d e   l a   p i l a .   L a   t a r e a   e s   c r u d a ,   e s   d e c i r ,   q u e   n o   i n v o c a   m e t a m e t h o d s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ R e a d e r 
 
 t y p e d e f   c o n s t   c h a r   *   ( *   l u a _ R e a d e r )   ( l u a _ S t a t e   L   * , 
 
                                                                         l o s   d a t o s   v o i d   * , 
 
                                                                         *   s i z e _ t   s i z e ) ; 
 
 L a   f u n c i  n   d e   l e c t u r a   u t i l i z a d o   p o r   l u a _ l o a d .   C a d a   v e z   q u e   n e c e s i t a   u n a   p i e z a   m  s   d e   l a   p o r c i  n ,   l u a _ l o a d   l l a m a   a l   l e c t o r ,   q u e   p a s a 
 
 l o   l a r g o   d e   s u   p a r  m e t r o   d e   d a t o s .   E l   l e c t o r   d e b e   d e v o l v e r   u n   p u n t e r o   a   u n   b l o q u e   d e   m e m o r i a   c o n   u n a   n u e v a   p i e z a   d e l   b l o q u e   d e   d a t o s   y   e s t a b l e c e r   e l   t a m a  o 
 
 p a r a   e l   t a m a  o   d e l   b l o q u e .   E l   b l o q u e   d e b e   e x i s t i r   h a s t a   q u e   l a   f u n c i  n   d e   l e c t o r   s e   v u e l v e   a   l l a m a r .   P a r a   s e  a l a r   e l   f i n a l   d e l   f r a g m e n t o ,   l a 
 
 l e c t o r   d e b e   d e v o l v e r   N U L L ,   o   a j u s t a r   e l   t a m a  o   a   c e r o .   L a   f u n c i  n   d e   l e c t u r a   p u e d e   d e v o l v e r   p i e z a s   d e   c u a l q u i e r   t a m a  o   m a y o r   q u e   c e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r e g i s t e r 
 
 [ - 0 ,   0 ,   e ] 
 
 
 
 v o i d   l u a _ r e g i s t e r   ( l u a _ S t a t e   L   * , 
 
                                       c o n s t   c h a r   *   n o m b r e , 
 
                                       l u a _ C F u n c t i o n   f ) ; 
 
 E s t a b l e c e   l a   f u n c i  n   f   C   c o m o   e l   n u e v o   v a l o r   d e   n o m b r e   g l o b a l .   S e   d e f i n e   c o m o   u n a   m a c r o : 
 
 
 
           #   D e f i n e   l u a _ r e g i s t e r   ( L ,   N ,   F )   \ 
 
                         ( L u a _ p u s h c f u n c t i o n   ( L ,   f ) ,   l u a _ s e t g l o b a l   ( L ,   n ) ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r e m o v e 
 
 [ - 1 ,   0 ,   - ] 
 
 
 
 v o i d   l u a _ r e m o v e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 Q u i t a   e l   e l e m e n t o   e n   e l    n d i c e   v  l i d o   d a d o ,   d e s p l a z a n d o   h a c i a   a b a j o   l o s   e l e m e n t o s   p o r   e n c i m a   d e   e s t e    n d i c e   p a r a   l l e n a r   e l   v a c  o .   N o   p u e d e   s e r   l l a m a d o 
 
 c o n   u n    n d i c e   d e   s e u d o - ,   p o r q u e   u n   p s e u d o -  n d i c e   n o   e s   u n a   p o s i c i  n   r e a l   d e   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r e p l a c e 
 
 [ - 1 ,   0 ,   - ] 
 
 
 
 v o i d   l u a _ r e p l a c e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 M u e v e   e l   e l e m e n t o   s u p e r i o r   e n   l a   p o s i c i  n   d a d a   ( y   a p a r e c e   l a   m i s m a ) ,   s i n   c a m b i a r   n i n g  n   e l e m e n t o   ( p o r   l o   t a n t o ,   r e e m p l a z a r   e l   v a l o r   e n 
 
 l a   p o s i c i  n   d a d a ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ r e s u m e 
 
 [ - ,   + ,   - ? ] 
 
 
 
 i n t   l u a _ r e s u m e   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 I n i c i a   y   s e   r e a n u d a   u n a   c o - r u t i n a   e n   u n   s u b p r o c e s o   d a d o . 
 
 
 
 P a r a   i n i c i a r   u n a   c o - r u t i n a ,   p r i m e r o   d e b e   c r e a r   u n   n u e v o   h i l o   ( v e r   l u a _ n e w t h r e a d ) ,   l u e g o   s e   p r e s i o n a   e n   s u   p i l a   d e   l a   f u n c i  n   p r i n c i p a l 
 
 a d e m  s   d e   l o s   a r g u m e n t o s ,   y   l u e g o   s e   l l a m a   a   l u a _ r e s u m e ,   c o n   n a r g   s i e n d o   e l   n  m e r o   d e   a r g u m e n t o s .   E s t a   l l a m a d a   d e v u e l v e   c u a n d o   l a   c o - r u t i n a 
 
 s u s p e n d e   o   t e r m i n a   s u   e j e c u c i  n .   C u a n d o   v u e l v e ,   l a   p i l a   c o n t i e n e   t o d o s   l o s   v a l o r e s   p a s a d o s     a   l u a _ y i e l d ,   o   t o d o s   l o s   v a l o r e s 
 
 d e v u e l t o   p o r   l a   f u n c i  n   d e l   c u e r p o .   v u e l v e   l u a _ r e s u m e   L U A _ Y I E L D   s i   l o s   r e n d i m i e n t o s   d e   c o - r u t i n a ,   0   s i   l a   c o - r u t i n a   t e r m i n a   s u 
 
 e j e c u c i  n   s i n   e r r o r e s ,   o   u n   c  d i g o   d e   e r r o r   e n   c a s o   d e   e r r o r e s   ( v e r   l u a _ p c a l l ) .   E n   c a s o   d e   e r r o r e s ,   l a   p i l a   n o   s e   d e s e n r o l l a , 
 
 a s    q u e   u s t e d   p u e d e   u t i l i z a r   l a   A P I   d e   d e p u r a c i  n   d e l   m i s m o .   E l   m e n s a j e   d e   e r r o r   e s t    e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a .   P a r a   r e i n i c i a r   u n a   c o - r u t i n a ,   u s t e d   p o n e   e n   s u 
 
 p i l a   s  l o   l o s   v a l o r e s   q u e   s e   p a s a n   c o m o   l o s   r e s u l t a d o s   d e   r e n d i m i e n t o ,   y   l u e g o   l l a m a r   a   l u a _ r e s u m e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t a l l o c f 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 v o i d   l u a _ s e t a l l o c f   ( l u a _ S t a t e   L   * ,   f   l u a _ A l l o c ,   v o i d   *   u d ) ; 
 
 C a m b i a   l a   f u n c i  n   d e   a s i g n a d o r   d e   u n   e s t a d o   d a d o   d e   f   c o n   l o s   d a t o s   d e l   u s u a r i o   u d . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t f e n v 
 
 [ - 1 ,   0 ,   - ] 
 
 
 
 i n t   l u a _ s e t f e n v   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 A p a r e c e   u n   c u a d r o   d e   l a   p i l a   y   l o   e s t a b l e c e   c o m o   e l   n u e v o   e n t o r n o   p a r a   e l   v a l o r   e n   e l    n d i c e   d a d o .   S i   e l   v a l o r   e n   l a   p r o p u e s t a 
 
  n d i c e   n o   e s   n i   u n a   f u n c i  n   n i   u n   h i l o   n i   u n   u s e r d a t a ,   l u a _ s e t f e n v   d e v u e l v e   0 .   D e   l o   c o n t r a r i o ,   d e v u e l v e   1 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t f i e l d 
 
 [ - 1 ,   0 ,   e ] 
 
 
 
 v o i d   l u a _ s e t f i e l d   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ,   c o n s t   c h a r   *   k ) ; 
 
 H a c e   e l   e q u i v a l e n t e   a   t   [ k ]   =   v ,   d o n d e   t   e s   e l   v a l o r   e n   e l    n d i c e   d a d o   v  l i d a   y   V   e s   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 E s t a   f u n c i  n   e x t r a e   e l   v a l o r   d e   l a   p i l a .   C o m o   e n   L u a ,   e s t a   f u n c i  n   p u e d e   p r o v o c a r   u n a   m e t a m  t o d o   p a r a   e l   " N e w I n d e x "   e v e n t o 
 
 ( V  a s e      2 . 8 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t g l o b a l 
 
 [ - 1 ,   0 ,   e ] 
 
 
 
 v o i d   l u a _ s e t g l o b a l   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   n o m b r e ) ; 
 
 E x t r a e   u n   v a l o r   d e   l a   p i l a   y   l o   e s t a b l e c e   c o m o   e l   n u e v o   v a l o r   d e   n o m b r e   g l o b a l .   S e   d e f i n e   c o m o   u n a   m a c r o : 
 
 
 
           #   D e f i n e   l u a _ s e t g l o b a l   ( L ,   s )   l u a _ s e t f i e l d   ( L ,   L U A _ G L O B A L S I N D E X ,   s ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t m e t a t a b l e 
 
 [ - 1 ,   0 ,   - ] 
 
 
 
 i n t   l u a _ s e t m e t a t a b l e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 A p a r e c e   u n   c u a d r o   d e   l a   p i l a   y   l o   e s t a b l e c e   c o m o   e l   m e t a t a b l a   n u e v o   p a r a   e l   v a l o r   e n   e l    n d i c e   e s p e c i f i c a d o   a c e p t a b l e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t t a b l e 
 
 [ - 2 ,   0 ,   e ] 
 
 
 
 a n u l a r   l u a _ s e t t a b l e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 H a c e   e l   e q u i v a l e n t e   a   t   [ k ]   =   v ,   d o n d e   t   e s   e l   v a l o r   e n   e l    n d i c e   d a d o   v  l i d a ,   v   e s   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a ,   y 
 
 k   e s   e l   v a l o r   j u s t o   p o r   d e b a j o   d e   l a   p a r t e   s u p e r i o r . 
 
 
 
 E s t a   f u n c i  n   a p a r e c e   l a   c l a v e   y   e l   v a l o r   d e   l a   p i l a .   C o m o   e n   L u a ,   e s t a   f u n c i  n   p u e d e   p r o v o c a r   u n a   m e t a m  t o d o   p a r a   e l 
 
 " N e w I n d e x "   c a s o   ( v  a s e      2 . 8 ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t t o p 
 
 [ - ,   + ,   - ? ] 
 
 
 
 v o i d   l u a _ s e t t o p   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 A c e p t a   c u a l q u i e r    n d i c e   a c e p t a b l e ,   o   0 ,   y   s e   e s t a b l e c e   l a   c i m a   d e   l a   p i l a   a   e s t e    n d i c e .   S i   e l   n u e v o   t o p e   e s   m  s   g r a n d e   q u e   e l   a n t e r i o r ,   a   c o n t i n u a c i  n , 
 
 l o s   n u e v o s   e l e m e n t o s   s e   l l e n a n   c o n   n u l a .   S i   e l    n d i c e   e s   0 ,   e n t o n c e s   t o d o s   l o s   e l e m e n t o s   d e   l a   p i l a   s e   q u i t a n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ S t a t e 
 
 t y p e d e f   s t r u c t   l u a _ S t a t e   l u a _ S t a t e ; 
 
 E s t r u c t u r a   o p a c a   q u e   m a n t i e n e   a   t o d o   e l   e s t a d o   d e   u n   i n t  r p r e t e   d e   L u a .   L a   b i b l i o t e c a   d e   L u a   e s   t o t a l m e n t e   r e e n t r a n t e :   n o   t i e n e   n i n g  n   m u n d i a l 
 
 v a r i a b l e s .   T o d a   l a   i n f o r m a c i  n   s o b r e   e l   e s t a d o   s e   m a n t i e n e   e n   e s t a   e s t r u c t u r a . 
 
 
 
 U n   p u n t e r o   a   e s t e   e s t a d o   s e   d e b e   p a s a r   c o m o   e l   p r i m e r   a r g u m e n t o   d e   c a d a   f u n c i  n   e n   l a   b i b l i o t e c a ,   c o n   e x c e p c i  n   d e   l u a _ n e w s t a t e , 
 
 l o   c u a l   c r e a   u n   e s t a d o   d e   L u a   d e s d e   c e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s t a t u s 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ s t a t u s   ( l u a _ S t a t e   *   L ) ; 
 
 D e v u e l v e   e l   e s t a d o   d e   l a   r o s c a   d e   L . 
 
 
 
 E l   e s t a d o   p u e d e   s e r   0   p a r a   u n   h i l o   n o r m a l ,   u n   c  d i g o   d e   e r r o r   s i   e l   h i l o   t e r m i n e   s u   e j e c u c i  n   c o n   u n   e r r o r ,   o   s i   L U A _ Y I E L D 
 
 e l   h i l o   s e   s u s p e n d e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o b o o l e a n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ t o b o o l e a n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   e l   v a l o r   L u a   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   u n   v a l o r   d e   C   b o o l e a n o   ( 0   o   1 ) .   A l   i g u a l   q u e   t o d a s   l a s   p r u e b a s   e n   L u a ,   l u a _ t o b o o l e a n 
 
 d e v u e l v e   1   p a r a   c u a l q u i e r   v a l o r   d i f e r e n t e   d e   L u a   f a l s a   y   n u l a ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   0 .   T a m b i  n   d e v u e l v e   0   c u a n d o   s e   l e   l l a m a   c o n   u n 
 
 n o   v  l i d a    n d i c e .   ( S i   u s t e d   d e s e a   a c e p t a r   l o s   v a l o r e s   b o o l e a n o s   s  l o   r e a l e s ,   u t i l i c e   l u a _ i s b o o l e a n   p a r a   c o m p r o b a r   e l   t i p o   d e l   v a l o r . ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o c f u n c t i o n 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ C F u n c t i o n   l u a _ t o c f u n c t i o n   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   u n   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   u n a   f u n c i  n   d e   C .   E s e   v a l o r   d e b e   s e r   u n a   f u n c i  n   d e   C ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   N U L L . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o i n t e g e r 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ I n t e g e r   l u a _ t o i n t e g e r   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   e l   v a l o r   L u a   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   e l   t i p o   d e   l u a _ I n t e g e r   f i r m a d o   i n t e g r a l .   E l   v a l o r   L u a   d e b e   s e r   u n 
 
 n  m e r o   o   u n a   c a d e n a   c o n v e r t i b l e   a   u n   n  m e r o   ( v  a s e      2 . 2 . 1 ) ,   d e   l o   c o n t r a r i o ,   l u a _ t o i n t e g e r   d e v u e l v e   0 . 
 
 
 
 S i   e l   n  m e r o   n o   e s   u n   n  m e r o   e n t e r o ,   s e   t r u n c a   d e   a l g u n a   m a n e r a   n o   e s p e c i f i c a d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o l s t r i n g 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 c o n s t   c h a r   *   l u a _ t o l s t r i n g   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ,   s i z e _ t   l e n     * ) ; 
 
 C o n v i e r t e   e l   v a l o r   L u a   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   u n a   c a d e n a   C .   S i   l e n   n o   e s   N U L L ,   s i n o   q u e   t a m b i  n   e s t a b l e c e   l e n   *   c o n   l a   c a d e n a 
 
 l o n g i t u d .   E l   v a l o r   d e   L u a   d e b e   s e r   u n a   c a d e n a   o   u n   n  m e r o ,   d e   l o   c o n t r a r i o ,   l a   f u n c i  n   d e v u e l v e   N U L L .   S i   e l   v a l o r   e s   u n   n  m e r o ,   e n t o n c e s 
 
 l u a _ t o l s t r i n g   t a m b i  n   c a m b i a   e l   v a l o r   r e a l   d e   l a   p i l a   e n   u n a   c a d e n a .   ( E s t e   c a m b i o   c o n f u n d e   l u a _ n e x t   c u a n d o   e s   l u a _ t o l s t r i n g 
 
 a p l i c a d a   a   l a s   t e c l a s   d u r a n t e   u n   r e c o r r i d o   d e   t a b l a . ) 
 
 
 
 l u a _ t o l s t r i n g   d e v u e l v e   u n   p u n t e r o   e n   p l e n a   c o n s o n a n c i a   c o n   u n a   c a d e n a   e n   e l   i n t e r i o r   d e l   e s t a d o   d e   L u a .   E s t a   c a d e n a   s i e m p r e   t i e n e   u n   c e r o   ( " \   0 " )   d e s p u  s   d e 
 
 s u    l t i m o   c a r  c t e r   ( c o m o   e n   C ) ,   p e r o   p u e d e   c o n t e n e r   o t r o s   c e r o s   e n   s u   c u e r p o .   D e b i d o   a   q u e   L u a   t i e n e   r e c o l e c c i  n   d e   b a s u r a ,   n o   h a y 
 
 g a r a n t  a   d e   q u e   e l   p u n t e r o   d e v u e l t o   p o r   l u a _ t o l s t r i n g   s e r    v  l i d a   d e s p u  s   d e   q u e   e l   v a l o r   c o r r e s p o n d i e n t e   s e   e l i m i n a   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o n u m b e r 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ N u m b e r   l u a _ t o n u m b e r   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   e l   v a l o r   L u a   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   e l   l u a _ N u m b e r   t i p o   C   ( v e r   l u a _ N u m b e r ) .   E l   v a l o r   L u a   d e b e   s e r   u n 
 
 n  m e r o   o   u n a   c a d e n a   c o n v e r t i b l e   a   u n   n  m e r o   ( v  a s e      2 . 2 . 1 ) ,   d e   l o   c o n t r a r i o ,   l u a _ t o n u m b e r   d e v u e l v e   0 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o p o i n t e r 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 c o n s t   v o i d   *   l u a _ t o p o i n t e r   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   u n   p u n t e r o   C   g e n  r i c o   ( v o i d   * ) .   E l   v a l o r   p u e d e   s e r   u n   u s e r d a t a ,   u n a   m e s a ,   u n 
 
 h i l o ,   o   d e   u n a   f u n c i  n ,   d e   l o   c o n t r a r i o ,   l u a _ t o p o i n t e r   d e v u e l v e   N U L L .   D i f e r e n t e s   o b j e t o s   l e   d a r    a   l o s   d i f e r e n t e s   p u n t e r o s .   N o   h a y 
 
 f o r m a   d e   c o n v e r t i r   e l   p u n t e r o   d e   n u e v o   a   s u   v a l o r   o r i g i n a l . 
 
 
 
 N o r m a l m e n t e ,   e s t a   f u n c i  n   s  l o   s e   u t i l i z a   p a r a   l a   i n f o r m a c i  n   d e   d e p u r a c i  n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o s t r i n g 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 c o n s t   c h a r   *   l u a _ t o s t r i n g   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 E q u i v a l e n t e   a   l u a _ t o l s t r i n g   a   i g u a l   a   N U L L   l e n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o t h r e a d 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ S t a t e   *   l u a _ t o t h r e a d   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 C o n v i e r t e   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   p a r a   u n   h i l o   d e   L u a   ( r e p r e s e n t a d o   c o m o   *   l u a _ S t a t e ) .   E s t e   v a l o r   d e b e   s e r   u n   h i l o ; 
 
 d e   l o   c o n t r a r i o ,   l a   f u n c i  n   d e v u e l v e   N U L L . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t o u s e r d a t a 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 v o i d   *   l u a _ t o u s e r d a t a   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 S i   e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e   e s   u n   u s e r d a t a   c o m p l e t o ,   d e v u e l v e   s u   d i r e c c i  n   d e   b l o q u e .   S i   e l   v a l o r   e s   u n   u s e r d a t a   l i g e r o , 
 
 d e v u e l v e   s u   p u n t e r o .   D e   l o   c o n t r a r i o ,   d e v u e l v e   N U L L . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t y p e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ t y p e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   e l   t i p o   d e l   v a l o r   e n   e l    n d i c e   d a d o   a c e p t a b l e ,   o   L U A _ T N O N E   p a r a   u n    n d i c e   n o   v  l i d o   ( e s   d e c i r ,   u n    n d i c e   p a r a   u n a 
 
 " V a c  a "   l a   p i l a   d e   p o s i c i  n ) .   L o s   t i p o s   d e v u e l t o s   p o r   l u a _ t y p e   e s t  n   c o d i f i c a d o s   p o r   l a s   s i g u i e n t e s   c o n s t a n t e s   d e f i n i d a s   e n   l u a . h :   L U A _ T N I L , 
 
 L U A _ T N U M B E R ,   L U A _ T B O O L E A N ,   L U A _ T S T R I N G ,   L U A _ T T A B L E ,   L U A _ T F U N C T I O N ,   L U A _ T U S E R D A T A ,   L U A _ T T H R E A D ,   y   L U A _ T L I G H T U S E R D A T A . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ t y p e n a m e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a _ t y p e n a m e   ( l u a _ S t a t e   L   * ,   i n t   t p ) ; 
 
 D e v u e l v e   e l   n o m b r e   d e l   t i p o   c o d i f i c a d o   p o r   e l   v a l o r   d e   T P ,   q u e   d e b e   s e r   u n o   d e   l o s   v a l o r e s   d e v u e l t o s   p o r   l u a _ t y p e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ W r i t e r 
 
 t y p e d e f   i n t   ( *   l u a _ W r i t e r )   ( l u a _ S t a t e   L   * , 
 
                                                       c o n s t   v o i d   *   p , 
 
                                                       Q u    s i z e _ t , 
 
                                                       v o i d   *   u d ) ; 
 
 E l   t i p o   d e   l a   f u n c i  n   d e   e s c r i t o r   u t i l i z a d o   p o r   l u a _ d u m p .   C a d a   v e z   q u e   s e   p r o d u c e   o t r o   p e d a z o   d e   t r o z o ,   l u a _ d u m p   l l a m a   e l   e s c r i t o r , 
 
 p a s a n d o   a   l o   l a r g o   d e   l a   m e m o r i a   i n t e r m e d i a   a   s e r   e s c r i t o   ( p ) ,   s u   t a m a  o   ( S Z ) ,   y   e l   p a r  m e t r o   d e   l o s   d a t o s   s u m i n i s t r a d o s   a   l u a _ d u m p . 
 
 
 
 E l   e s c r i t o r   d e v u e l v e   u n   c  d i g o   d e   e r r o r :   0   s i g n i f i c a   q u e   n o   h a y   e r r o r e s ,   c u a l q u i e r   o t r o   v a l o r   s i g n i f i c a   u n   e r r o r   y   d e t i e n e   l u a _ d u m p   d e   l l a m a r   a   l a 
 
 e s c r i t o r   d e   n u e v o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ x m o v e 
 
 [ - ,   + ,   - ? ] 
 
 
 
 v o i d   l u a _ x m o v e   ( l u a _ S t a t e   *   d e ,   l u a _ S t a t e   *   a ,   i n t   n ) ; 
 
 L o s   v a l o r e s   d e   i n t e r c a m b i o   e n t r e   l o s   d i f e r e n t e s   h i l o s   d e   l a   s i t u a c i  n   m u n d i a l   m i s m a . 
 
 
 
 E s t a   f u n c i  n   a p a r e c e   n   v a l o r e s   d e   l a   p i l a   d e ,   y   l o s   e m p u j a   e n   l a   p i l a   d e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ y i e l d 
 
 [ - ,   + ,   - ? ] 
 
 
 
 i n t   l u a _ y i e l d   ( l u a _ S t a t e   L   * ,   n r e s u l t s   i n t ) ; 
 
 P r o d u c e   u n a   c o - r u t i n a . 
 
 
 
 E s t a   f u n c i  n   s  l o   d e b e   s e r   l l a m a d o   c o m o   l a   e x p r e s i  n   d e   r e t o r n o   d e   u n a   f u n c i  n   d e   C ,   c o m o   s i g u e : 
 
 
 
           v o l v e r   l u a _ y i e l d   ( L ,   n r e s u l t s ) ; 
 
 
 
 C u a n d o   u n a   f u n c i  n   C   l l a m a   a   l u a _ y i e l d   d e   e s a   m a n e r a ,   l a   c o - r u t i n a   c o r r i e n d o   s u s p e n d e   s u   e j e c u c i  n ,   y   l a   l l a m a d a   a   l u a _ r e s u m e 
 
 q u e   s e   i n i c i    e s t e   v u e l v e   c o - r u t i n a .   L o s   n r e s u l t s   p a r  m e t r o   e s   e l   n  m e r o   d e   v a l o r e s   d e   l a   p i l a   q u e   s e   p a s a n   c o m o 
 
 r e s u l t a d o s   a   l u a _ r e s u m e . 
 
 
 
 3 . 8   -   L a   i n t e r f a z   d e   d e p u r a c i  n 
 
 L u a   n o   t i e n e   i n c o r p o r a d o   e n   l a s   i n s t a l a c i o n e s   d e   d e p u r a c i  n .   E n   s u   l u g a r ,   o f r e c e   u n a   i n t e r f a z   e s p e c i a l   p o r   m e d i o   d e   f u n c i o n e s   y   l o s   g a n c h o s .   E s t e 
 
 i n t e r f a z   p e r m i t e   l a   c o n s t r u c c i  n   d e   d i f e r e n t e s   t i p o s   d e   d e p u r a d o r e s ,   p e r f i l a d o r e s ,   y   o t r a s   h e r r a m i e n t a s   q u e   n e c e s i t a n   " i n f o r m a c i  n   p r i v i l e g i a d a " 
 
 d e   l a   i n t  r p r e t e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ D e b u g 
 
 t y p e d e f   s t r u c t   { l u a _ D e b u g 
 
     i n t   e v e n t o ; 
 
     c o n s t   c h a r   *   n a m e ;   /   *   ( n )   *   / 
 
     c o n s t   c h a r   *   n a m e w h a t ;   /   *   ( n )   *   / 
 
     c o n s t   c h a r   *   l o ,   /   *   ( S )   *   / 
 
     c o n s t   c h a r   *   f u e n t e ;   /   *   ( S )   *   / 
 
     i n t   c u r r e n t l i n e ;   /   *   ( L )   *   / 
 
     n u p s   i n t   /   *   ( u )   e l   n  m e r o   d e   u p v a l u e s     *   / 
 
     i n t   l i n e d e f i n e d ;   /   *   ( S )   *   / 
 
     i n t   l a s t l i n e d e f i n e d ;   /   *   ( S )   *   / 
 
     c a r a c t e r e s   s h o r t _ s r c   [ L U A _ I D S I Z E ] ;   /   *   ( S )   *   / 
 
     /   *   P a r t e   p r i v a d a   *   / 
 
     o t r o s   c a m p o s 
 
 L u a _ D e b u g } ; 
 
 U n a   e s t r u c t u r a   q u e   s e   u t i l i z a   p a r a   r e a l i z a r   d i f e r e n t e s   p i e z a s   d e   i n f o r m a c i  n   a c e r c a   d e   u n a   f u n c i  n   a c t i v a .   l u a _ g e t s t a c k   l l e n a   s  l o   e l   s e c t o r   p r i v a d o 
 
 p a r t e   d e   e s t a   e s t r u c t u r a ,   p a r a   s u   u s o   p o s t e r i o r .   P a r a   l l e n a r   l o s   o t r o s   c a m p o s   d e   l a   l u a _ D e b u g   c o n   i n f o r m a c i  n    t i l ,   l l a m e   a   l u a _ g e t i n f o . 
 
 
 
 L o s   c a m p o s   d e   l u a _ D e b u g   t i e n e n   e l   s i g u i e n t e   s i g n i f i c a d o : 
 
 
 
 f u e n t e :   S i   l a   f u n c i  n   s e   d e f i n i    e n   u n a   c a d e n a ,   e n t o n c e s   e s   f u e n t e   d e   e s a   c a d e n a .   S i   l a   f u n c i  n   s e   d e f i n e   e n   u n   a r c h i v o ,   a   c o n t i n u a c i  n , 
 
 f u e n t e   c o m i e n z a   c o n   u n   " @ "   s e g u i d o   d e l   n o m b r e   d e l   a r c h i v o . 
 
 s h o r t _ s r c :   u n a   " i m p r e s i  n "   d e   l a   v e r s i  n   d e   o r i g e n ,   p a r a   s e r   u t i l i z a d o   e n   l o s   m e n s a j e s   d e   e r r o r . 
 
 l i n e d e f i n e d :   e l   n  m e r o   d e   l  n e a   d o n d e   l a   d e f i n i c i  n   d e   l a   f u n c i  n   c o m i e n z a . 
 
 l a s t l i n e d e f i n e d :   e l   n  m e r o   d e   l  n e a   d o n d e   l a   d e f i n i c i  n   d e   l a   f u n c i  n   t e r m i n a . 
 
 l o :   l a   c a d e n a   " L u a "   s i   l a   f u n c i  n   e s   u n a   f u n c i  n   L u a ,   " C "   s i   s e   t r a t a   d e   u n a   f u n c i  n   d e   C ,   " p r i n c i p a l "   s i   e s   l a   p a r t e   p r i n c i p a l   d e   u n 
 
 e n   t r o z o s ,   y   l a   " c o l a "   s i   s e   t r a t a r a   d e   u n a   f u n c i  n   q u e   h i z o   u n a   l l a m a d a   d e   c o l a .   E n   e s t e    l t i m o   c a s o ,   L u a   n o   t i e n e   n i n g u n a   o t r a   i n f o r m a c i  n   s o b r e   e l 
 
 f u n c i  n . 
 
 c u r r e n t l i n e :   l a   l  n e a   a c t u a l ,   d o n d e   l a   f u n c i  n   d a d a   s e   e s t    e j e c u t a n d o .   C u a n d o   n o   h a y   i n f o r m a c i  n   e n   l  n e a   e s t    d i s p o n i b l e ,   e s   c u r r e n t l i n e 
 
 e s t a b l e c e   e n   - 1 . 
 
 N o m b r e :   u n   n o m b r e   r a z o n a b l e   p a r a   l a   f u n c i  n   d a d a .   D a d o   q u e   l a s   f u n c i o n e s   e n   L u a   s o n   v a l o r e s   d e   p r i m e r a   c l a s e ,   q u e   n o   t i e n e n   u n a   f i j a 
 
 N o m b r e :   a l g u n a s   f u n c i o n e s   p u e d e   s e r   e l   v a l o r   d e   m  l t i p l e s   v a r i a b l e s   g l o b a l e s ,   m i e n t r a s   q u e   o t r o s   s  l o   s e   p u e d e n   a l m a c e n a r   e n   u n   c a m p o   d e   t a b l a .   L a 
 
 f u n c i  n   d e   l u a _ g e t i n f o   c o m p r u e b a   c  m o   l a   f u n c i  n   f u e   l l a m a d a   p a r a   e n c o n t r a r   u n   n o m b r e   a d e c u a d o .   S i   n o   p u e d e   e n c o n t r a r   u n   n o m b r e ,   e n t o n c e s   e l   n o m b r e   s e   a j u s t a 
 
 a   N U L L . 
 
 n a m e w h a t :   e x p l i c a   e l   c a m p o   d e   n o m b r e .   E l   v a l o r   d e   n a m e w h a t   p u e d e   s e r   " g l o b a l " ,   " l o c a l " ,   " m  t o d o " ,   " c a m p o " ,   " r e v a l u a r " ,   o   " "   ( e l 
 
 c a d e n a   v a c  a ) ,   d e   a c u e r d o   a   l a   f o r m a   e n   q u e   l a   f u n c i  n   s e a   l l a m a d a .   ( L u a   u t i l i z a   l a   c a d e n a   v a c  a   c u a n d o   n o   h a y   o t r a   o p c i  n   p a r e c e   q u e   s e   a p l i c a . ) 
 
 P M B :   e l   n  m e r o   d e   u p v a l u e s     d e   l a   f u n c i  n . 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t h o o k 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ H o o k   l u a _ g e t h o o k   ( l u a _ S t a t e   *   L ) ; 
 
 D e v u e l v e   l a   f u n c i  n   d e   e n l a c e   a c t u a l . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t h o o k c o u n t 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ g e t h o o k c o u n t   ( l u a _ S t a t e   *   L ) ; 
 
 D e v u e l v e   e l   r e c u e n t o   d e   g a n c h o   a c t u a l . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t h o o k m a s k 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ g e t h o o k m a s k   ( l u a _ S t a t e   *   L ) ; 
 
 D e v u e l v e   l a   m  s c a r a   d e   g a n c h o   a c t u a l . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t i n f o 
 
 [ -   ( 0   |   1 ) ,   +   ( 0   |   1   |   2 ) ,   m ] 
 
 
 
 i n t   l u a _ g e t i n f o   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   l o ,   l u a _ D e b u g   *   a r ) ; 
 
 D e v u e l v e   i n f o r m a c i  n   s o b r e   u n a   f u n c i  n   e s p e c  f i c a   o   i n v o c a c i  n   d e   l a   f u n c i  n . 
 
 
 
 P a r a   o b t e n e r   i n f o r m a c i  n   a c e r c a   d e   u n a   i n v o c a c i  n   d e   l a   f u n c i  n ,   e l   a r   p a r  m e t r o   d e b e   s e r   u n   r e g i s t r o   d e   a c t i v a c i  n   v  l i d o   q u e   f u e   o c u p a d o   p o r   u n 
 
 l l a m a d a   p r e v i a   a   l u a _ g e t s t a c k   o   d a d o   c o m o   a r g u m e n t o   p a r a   u n   g a n c h o   ( v e r   l u a _ H o o k ) . 
 
 
 
 P a r a   o b t e n e r   i n f o r m a c i  n   s o b r e   u n a   f u n c i  n   q u e   l o   l l e v a r    a   l a   p i l a   e   i n i c i a r   l a   c a d e n a   d e   l o   q u e   c o n   e l   ' > '   a l   p e r s o n a j e .   ( E n   e s e 
 
 c a s o ,   l u a _ g e t i n f o   a p a r e c e   l a   f u n c i  n   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . )   P o r   e j e m p l o ,   p a r a   s a b e r   e n   q u    l  n e a   d e   u n a   f u n c i  n   f   s e   d e f i n e , 
 
 u s t e d   p u e d e   e s c r i b i r   e l   s i g u i e n t e   c  d i g o : 
 
 
 
           l u a _ D e b u g   a r ; 
 
           l u a _ g e t f i e l d   ( L ,   L U A _ G L O B A L S I N D E X ,   " f " ) ;   /   *   O b t i e n e   m u n d i a l   ' f '   *   / 
 
           l u a _ g e t i n f o   ( L   " >   S " ,   d e   C  s a r ) ; 
 
           p r i n t f   ( " %   d   \   n " ,   a r . l i n e d e f i n e d ) ; 
 
 
 
 C a d a   p e r s o n a j e   e n   l a   c a d e n a   d e   l o   q u e   s e l e c c i o n a   a l g u n o s   c a m p o s   d e   l a   e s t r u c t u r a   a r   p a r a   s e r   l l e n a d o s   o   u n   v a l o r   q u e   s e   i n s e r t a   e n   l a 
 
 p i l a : 
 
 
 
 ' N ' :   r e l l e n a   e l   n o m b r e   d e l   c a m p o   y   n a m e w h a t ; 
 
 ' S ' :   r e l l e n a   l o s   c a m p o s   d e   l a   f u e n t e ,   s h o r t _ s r c ,   l i n e d e f i n e d ,   l a s t l i n e d e f i n e d ,   y   q u  ; 
 
 ' L ' :   r e l l e n a   e l   c a m p o   d e   c u r r e n t l i n e ; 
 
 ' U ' :   r e l l e n a   l o s   P M B   s o b r e   e l   t e r r e n o ; 
 
 ' F ' :   e m p u j a   e n   l a   p i l a   d e   l a   f u n c i  n   q u e   s e   e j e c u t a   e n   e l   n i v e l   d e t e r m i n a d o ; 
 
 ' L ' :   e m p u j a   e n   l a   p i l a   u n a   t a b l a   c u y o s    n d i c e s   s o n   l o s   n  m e r o s   d e   l a s   l  n e a s   q u e   s o n   v  l i d o s   e n   l a   f u n c i  n .   ( U n a   l  n e a   v  l i d a 
 
 e s   u n a   l  n e a   c o n   a l g o   d e   c  d i g o   a s o c i a d o ,   e s   d e c i r ,   u n a   l  n e a   d o n d e   u s t e d   p u e d e   p o n e r   u n   p u n t o   d e   q u i e b r e .   N o   v  l i d o s   i n c l u y e n   l a s   l  n e a s   d e   l a s   l  n e a s   v a c  a s 
 
 y   c o m e n t a r i o s . ) 
 
 E s t a   f u n c i  n   d e v u e l v e   0   e n   c a s o   d e   e r r o r   ( p o r   e j e m p l o ,   u n a   o p c i  n   n o   v  l i d a   e n   l o   q u e ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t l o c a l 
 
 [ - 0 ,   +   ( 0   |   1 ) ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a _ g e t l o c a l   ( l u a _ S t a t e   L   * ,   l u a _ D e b u g   *   a r ,   i n t   n ) ; 
 
 O b t i e n e   i n f o r m a c i  n   s o b r e   u n a   v a r i a b l e   l o c a l   d e   u n   r e g i s t r o   d e   a c t i v a c i  n   d e t e r m i n a d o .   E l   p a r  m e t r o   a r   d e b e   s e r   u n   r e g i s t r o   d e   a c t i v a c i  n   v  l i d a 
 
 q u e   f u e   l l e n a d o   p o r   u n a   l l a m a d a   p r e v i a   a   l u a _ g e t s t a c k   o   d a d o   c o m o   a r g u m e n t o   p a r a   u n   g a n c h o   ( v e r   l u a _ H o o k ) .   E l    n d i c e   n   s e l e c c i o n a   q u  
 
 v a r i a b l e   l o c a l   p a r a   i n s p e c c i o n a r   ( 1   e s   e l   p r i m e r   p a r  m e t r o   o   v a r i a b l e   l o c a l   a c t i v a ,   y   a s    s u c e s i v a m e n t e ,   h a s t a   q u e   e l    l t i m o   l o c a l   a c t i v a 
 
 v a r i a b l e ) .   l u a _ g e t l o c a l   e m p u j a   e l   v a l o r   d e   l a   v a r i a b l e   e n   l a   p i l a   y   d e v u e l v e   s u   n o m b r e . 
 
 
 
 L o s   n o m b r e s   d e   v a r i a b l e s   q u e   c o m i e n z a n   c o n   ' ( '   ( p a r  n t e s i s   d e   a p e r t u r a )   r e p r e s e n t a n   v a r i a b l e s   i n t e r n a s   ( v a r i a b l e s   d e   c o n t r o l   d e   l a z o ,   t e m p o r a l e s   y 
 
 C   l o s   l o c a l e s   d e   l a   f u n c i  n ) . 
 
 
 
 D e v u e l v e   N U L L   ( y   e m p u j a   n a d a )   c u a n d o   e l    n d i c e   e s   m a y o r   q u e   e l   n  m e r o   d e   v a r i a b l e s   l o c a l e s   a c t i v o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t s t a c k 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ g e t s t a c k   ( l u a _ S t a t e   L   * ,   i n t   l e v e l ,   l u a _ D e b u g   *   a r ) ; 
 
 O b t e n e r   i n f o r m a c i  n   s o b r e   l a   p i l a   d e   e j e c u c i  n   i n t  r p r e t e . 
 
 
 
 E s t a   f u n c i  n   r e l l e n a   p a r t e s   d e   u n a   e s t r u c t u r a   l u a _ D e b u g   c o n   u n a   i d e n t i f i c a c i  n   d e l   r e g i s t r o   d e   a c t i v a c i  n   d e   l a   f u n c i  n 
 
 l a   e j e c u c i  n   d e   u n   d e t e r m i n a d o   n i v e l .   E l   n i v e l   0   e s   l a   f u n c i  n   a c t u a l   e n   f u n c i o n a m i e n t o ,   m i e n t r a s   q u e   e l   n i v e l   n   + 1   e s   l a   f u n c i  n   q u e   h a   l l a m a d o 
 
 n i v e l   n .   C u a n d o   n o   h a y   e r r o r e s ,   l u a _ g e t s t a c k   d e v u e l v e   1 ;   c u a n d o   s e   l e   l l a m a   c o n   u n   n i v e l   m a y o r   q u e   l a   p r o f u n d i d a d   d e   l a   p i l a ,   q u e 
 
 d e v u e l v e   0 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ g e t u p v a l u e 
 
 [ - 0 ,   +   ( 0   |   1 ) ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a _ g e t u p v a l u e   ( l u a _ S t a t e   L   * ,   f u n c i n d e x   i n t ,   i n t   n ) ; 
 
 O b t i e n e   i n f o r m a c i  n   s o b r e   e l   c i e r r e   d e   r e v a l u a r .   ( P a r a   l a s   f u n c i o n e s   d e   L u a ,   u p v a l u e s     s o n   l a s   v a r i a b l e s   l o c a l e s   e x t e r n o s   q u e   l a   f u n c i  n 
 
 u s o s ,   y   q u e   p o r   c o n s i g u i e n t e   s e   i n c l u y e   e n   s u   c i e r r e . )   l u a _ g e t u p v a l u e   o b t i e n e   e l    n d i c e   n   d e   u n   r e v a l u a r ,   e m p u j a   e l 
 
 r e v a l u a r   e l   v a l o r   e n   l a   p i l a ,   y   d e v u e l v e   s u   n o m b r e .   f u n c i n d e x   p u n t o s   p a r a   e l   c i e r r e   d e   l a   p i l a .   ( U p v a l u e s     n o   t i e n e n 
 
 p a r t i c u l a r ,   e l   o r d e n ,   y a   q u e   s o n   a c t i v o s   a   t r a v  s   d e   t o d a   l a   f u n c i  n .   P o r   l o   t a n t o ,   e s t  n   n u m e r a d o s   e n   u n   o r d e n   a r b i t r a r i o . ) 
 
 
 
 D e v u e l v e   N U L L   ( y   e m p u j a   n a d a )   c u a n d o   e l    n d i c e   e s   m a y o r   q u e   e l   n  m e r o   d e   u p v a l u e s .   P a r a   l a s   f u n c i o n e s   d e   C ,   e s t a   f u n c i  n 
 
 u t i l i z a   l a   c a d e n a   v a c  a   " "   c o m o   u n   n o m b r e   p a r a   t o d o s   l o s   u p v a l u e s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ H o o k 
 
 t y p e d e f   v o i d   ( *   l u a _ H o o k )   ( l u a _ S t a t e   L   * ,   *   l u a _ D e b u g   A R ) ; 
 
 T i p o   p a r a   l a   d e p u r a c i  n   d e   l a s   f u n c i o n e s   d e   e n l a c e . 
 
 
 
 C a d a   v e z   q u e   u n   e n l a c e   s e   l e   l l a m a ,   s u   a r g u m e n t o   a r   t i e n e   s u   e v e n t o   d e   c a m p a  a   i n s t a l a d o   p a r a   e l   e v e n t o   c o n c r e t o   q u e   d e s e n c a d e n    e l   g a n c h o .   L u a 
 
 i d e n t i f i c a   a   e s t o s   e v e n t o s   c o n   l a s   s i g u i e n t e s   c o n s t a n t e s :   L U A _ H O O K C A L L ,   L U A _ H O O K R E T ,   L U A _ H O O K T A I L R E T ,   L U A _ H O O K L I N E ,   y 
 
 L U A _ H O O K C O U N T .   P o r   o t r a   p a r t e ,   p a r a   l o s   e v e n t o s   d e   l a   l  n e a ,   e l   c u r r e n t l i n e   c a m p o   t a m b i  n   s e   e s t a b l e c e .   P a r a   o b t e n e r   e l   v a l o r   d e   c u a l q u i e r   o t r o   c a m p o   e n   a r ,   e l 
 
 g a n c h o   d e b e   l l a m a r   a   l u a _ g e t i n f o .   P a r a   e v e n t o s   d e   r e t o r n o ,   e l   e v e n t o   p u e d e   s e r   L U A _ H O O K R E T ,   e l   v a l o r   n o r m a l ,   o   L U A _ H O O K T A I L R E T .   E n   e l 
 
 e s t e    l t i m o   c a s o ,   L u a   e s t    s i m u l a n d o   u n   r e t o r n o   d e   u n a   f u n c i  n   q u e   h i z o   u n a   l l a m a d a   d e   c o l a ,   e n   e s t e   c a s o ,   e s   i n  t i l   l l a m a r   a 
 
 l u a _ g e t i n f o . 
 
 
 
 M i e n t r a s   q u e   L u a   e s t    e j e c u t a n d o   u n   g a n c h o ,   d e s h a b i l i t a   o t r a s   l l a m a d a s   a   l o s   g a n c h o s .   P o r   l o   t a n t o ,   s i   u n   g a n c h o   v u e l v e   a   l l a m a r   L u a   p a r a   e j e c u t a r   u n a   f u n c i  n   o 
 
 u n a   p a r t e ,   e s t a   e j e c u c i  n   s e   p r o d u c e   s i n   n i n g  n   t i p o   d e   l l a m a d a s   a   l o s   g a n c h o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t h o o k 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 i n t   l u a _ s e t h o o k   ( l u a _ S t a t e   L   * ,   f   l u a _ H o o k ,   l a   m  s c a r a   d e   i n t ,   i n t   c o u n t ) ; 
 
 E s t a b l e c e   l a   f u n c i  n   d e   e n l a c e   d e   d e p u r a c i  n . 
 
 
 
 F   E l   a r g u m e n t o   e s   l a   f u n c i  n   d e   e n l a c e .   m  s c a r a   e s p e c i f i c a   e n   e l   q u e   l o s   a c o n t e c i m i e n t o s   d e l   g a n c h o   s e r    l l a m a d o :   e s t    f o r m a d o   p o r   u n   b i t   a   b i t   o   d e 
 
 l a   c o n s t a n t e s   L U A _ M A S K C A L L ,   L U A _ M A S K R E T ,   L U A _ M A S K L I N E ,   y   L U A _ M A S K C O U N T .   E l   a r g u m e n t o   c u e n t a   s  l o   t i e n e   s e n t i d o   c u a n d o   l a 
 
 l a   m  s c a r a   i n c l u y e   L U A _ M A S K C O U N T .   P a r a   c a d a   e v e n t o ,   e l   g a n c h o   s e   l l a m a   c o m o   s e   e x p l i c a   a   c o n t i n u a c i  n : 
 
 
 
 E l   g a n c h o   d e   l l a m a d a :   s e   l l a m a   c u a n d o   e l   i n t  r p r e t e   s e   l l a m a   a   u n a   f u n c i  n .   E l   g a n c h o   s e   l l a m a   j u s t o   d e s p u  s   d e   L u a   e n t r a   e n   l a   n u e v a   f u n c i  n , 
 
 a n t e s   d e   l a   f u n c i  n   s e   s u s   a r g u m e n t o s . 
 
 E l   g a n c h o   d e   r e t o r n o :   s e   l l a m a   c u a n d o   e l   i n t  r p r e t e   r e g r e s a   d e   u n a   f u n c i  n .   E l   g a n c h o   s e   l l a m a   j u s t o   a n t e s   d e   L u a   s a l e   d e   l a 
 
 f u n c i  n .   U s t e d   n o   t i e n e   a c c e s o   a   l o s   v a l o r e s   a   s e r   d e v u e l t o s   p o r   l a   f u n c i  n . 
 
 E l   g a n c h o   d e   l a   l  n e a :   s e   l l a m a   c u a n d o   e l   i n t  r p r e t e   e s t    a   p u n t o   d e   i n i c i a r   l a   e j e c u c i  n   d e   u n a   n u e v a   l  n e a   d e   c  d i g o ,   o   c u a n d o   s e   s a l t a   d e   n u e v o 
 
 e n   e l   c  d i g o   ( i n c l u s o   a   l a   m i s m a   l  n e a ) .   ( E s t e   e v e n t o   s  l o   s u c e d e   c u a n d o   L u a   e s t    e j e c u t a n d o   u n a   f u n c i  n   L u a . ) 
 
 E l   g a n c h o   d e   c u e n t a :   s e   l l a m a   d e s p u  s   d e   q u e   e l   i n t  r p r e t e   e j e c u t a   l a s   i n s t r u c c i o n e s   d e   c a d a   r e c u e n t o .   ( E s t e   e v e n t o   s  l o   s u c e d e   m i e n t r a s   L u a   e s 
 
 e j e c u t a n d o   u n a   f u n c i  n   L u a . ) 
 
 U n   g a n c h o   s e   d e s a c t i v a   m e d i a n t e   e l   e s t a b l e c i m i e n t o   d e   l a   m  s c a r a   a   c e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t l o c a l 
 
 [ -   ( 0   |   1 ) ,   0 ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a _ s e t l o c a l   ( l u a _ S t a t e   L   * ,   l u a _ D e b u g   *   a r ,   i n t   n ) ; 
 
 E s t a b l e c e   e l   v a l o r   d e   u n a   v a r i a b l e   l o c a l   d e   u n   r e g i s t r o   d e   a c t i v a c i  n   d e t e r m i n a d o .   P a r  m e t r o s   A r   y n   s o n   c o m o   e n   l u a _ g e t l o c a l   ( v  a s e 
 
 l u a _ g e t l o c a l ) .   l u a _ s e t l o c a l   a s i g n a   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   a   l a   v a r i a b l e   y   d e v u e l v e   s u   n o m b r e .   T a m b i  n   a p a r e c e 
 
 e l   v a l o r   d e   l a   p i l a . 
 
 
 
 D e v u e l v e   N U L L   ( y   a p a r e c e   n a d a )   c u a n d o   e l    n d i c e   e s   m a y o r   q u e   e l   n  m e r o   d e   v a r i a b l e s   l o c a l e s   a c t i v o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a _ s e t u p v a l u e 
 
 [ -   ( 0   |   1 ) ,   0 ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a _ s e t u p v a l u e   ( l u a _ S t a t e   L   * ,   f u n c i n d e x   i n t ,   i n t   n ) ; 
 
 E s t a b l e c e   e l   v a l o r   d e   r e v a l u a r   u n   t a p  n .   S e   a s i g n a   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   a   l a   r e v a l u a r   y   d e v u e l v e   s u   n o m b r e .   L o 
 
 T a m b i  n   a p a r e c e   e l   v a l o r   d e   l a   p i l a .   P a r  m e t r o s   f u n c i n d e x   y n   s o n   c o m o   e n   l a   l u a _ g e t u p v a l u e   ( v  a s e   l u a _ g e t u p v a l u e ) . 
 
 
 
 D e v u e l v e   N U L L   ( y   a p a r e c e   n a d a )   c u a n d o   e l    n d i c e   e s   m a y o r   q u e   e l   n  m e r o   d e   u p v a l u e s . 
 
 
 
 4   -   L a   B i b l i o t e c a   A u x i l i a r 
 
 L a   b i b l i o t e c a   a u x i l i a r   p r o p o r c i o n a   v a r i a s   f u n c i o n e s   c o n v e n i e n t e s   p a r a   i n t e r f a z   d e   C   c o n   L u a .   S i   b i e n   l a   b a s e   A P I   p r o p o r c i o n a   e l 
 
 f u n c i o n e s   p r i m i t i v a s   d e   t o d a s   l a s   i n t e r a c c i o n e s   e n t r e   C   y   L u a ,   l a   b i b l i o t e c a   a u x i l i a r   p r o p o r c i o n a   f u n c i o n e s   d e   n i v e l   s u p e r i o r   p a r a   a l g u n o s 
 
 l a s   t a r e a s   c o m u n e s . 
 
 
 
 T o d a s   l a s   f u n c i o n e s   d e   l a   b i b l i o t e c a   a u x i l i a r   s e   d e f i n e n   e n   l a u x l i b . h   e n c a b e z a d o   d e l   a r c h i v o   y   t e n e r   u n   l u a L _   p r e f i j o . 
 
 
 
 T o d a s   l a s   f u n c i o n e s   d e   l a   b i b l i o t e c a   a u x i l i a r   e s t  n   c o n s t r u i d a s   e n   l a   p a r t e   s u p e r i o r   d e   l a   A P I   d e   b a s e ,   y   p o r   l o   q u e   p r o p o r c i o n a n   n a d a   q u e   n o   s e   p u e d e   h a c e r 
 
 c o n   e s t a   A P I . 
 
 
 
 V a r i a s   f u n c i o n e s   e n   l a   b i b l i o t e c a   a u x i l i a r   s e   u t i l i z a   p a r a   c o m p r o b a r   l o s   a r g u m e n t o s   d e   l a   f u n c i  n   C .   S u s   n o m b r e s   s o n   s i e m p r e   *   l u a L _ c h e c k   o 
 
 l u a L _ o p t   * .   T o d a s   e s t a s   f u n c i o n e s   p r o d u c e   u n   e r r o r   s i   e l   c h e q u e   n o   e s t    s a t i s f e c h o .   D e b i d o   a   q u e   e l   m e n s a j e   d e   e r r o r   e s t    f o r m a t e a d o   p a r a 
 
 a r g u m e n t o s   ( p o r   e j e m p l o ,   " m a l   a r g u m e n t o   #   1 " ) ,   u s t e d   n o   d e b e   u t i l i z a r   e s t a s   f u n c i o n e s   p a r a   l o s   v a l o r e s   d e   l a   p i l a   d e   o t r o s . 
 
 
 
 4 . 1   -   F u n c i o n e s   y   t i p o s 
 
 A q u    t e n e m o s   u n a   l i s t a   d e   t o d a s   l a s   f u n c i o n e s   y   t i p o s   d e   l a   b i b l i o t e c a   a u x i l i a r   e n   o r d e n   a l f a b  t i c o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a d d c h a r 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ a d d c h a r   ( l u a L _ B u f f e r   *   B ,   c h a r   c ) ; 
 
 A  a d e   e l   c a r  c t e r   c   a l   b u f f e r   B   ( v  a s e   l u a L _ B u f f e r ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a d d l s t r i n g 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ a d d l s t r i n g   ( l u a L _ B u f f e r   *   B ,   c o n s t   c h a r   *   s ,   l   s i z e _ t ) ; 
 
 A g r e g a   l a   c a d e n a   a p u n t a d a   p o r   s   c o n   l   l o n g i t u d   a l   b u f f e r   B   ( v  a s e   l u a L _ B u f f e r ) .   L a   c a d e n a   p u e d e   c o n t e n e r   c e r o s   i n c r u s t a d o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a d d s i z e 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ a d d s i z e   ( l u a L _ B u f f e r   *   B ,   s i z e _ t   n ) ; 
 
 A  a d e   a l   b u f f e r   B   ( v  a s e   l u a L _ B u f f e r )   u n a   c a d e n a   d e   l o n g i t u d   n   c o p i a d o   p r e v i a m e n t e   e n   e l    r e a   d e   a m o r t i g u a m i e n t o   ( v e r   l u a L _ p r e p b u f f e r ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a d d s t r i n g 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ a d d s t r i n g   ( l u a L _ B u f f e r   *   B ,   c o n s t   c h a r   *   s ) ; 
 
 A g r e g a   l a   c a d e n a   t e r m i n a d a   e n   c e r o   a p u n t a d a   p o r   s   c o n   e l   t a m p  n   B   ( v e r   l u a L _ B u f f e r ) .   L a   c a d e n a   n o   p u e d e   c o n t e n e r   c e r o s   i n c r u s t a d o s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a d d v a l u e 
 
 [ - 1 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ a d d v a l u e   ( l u a L _ B u f f e r   *   B ) ; 
 
 S u m a   e l   v a l o r   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   p a r a   e l   b u f f e r   B   ( v  a s e   l u a L _ B u f f e r ) .   E x t r a e   e l   v a l o r . 
 
 
 
 E s t a   e s   l a    n i c a   f u n c i  n   d e   b u f f e r s   d e   c a d e n a s   q u e   p u e d e   ( y   d e b e )   s e r   l l a m a d o   c o n   u n   e l e m e n t o   e x t r a   e n   l a   p i l a ,   q u e   e s   e l 
 
 v a l o r   q u e   s e   a  a d e   a   l a   m e m o r i a   i n t e r m e d i a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a r g c h e c k 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 v o i d   l u a L _ a r g c h e c k   ( l u a _ S t a t e   L   * , 
 
                                         c o n d   i n t , 
 
                                         i n t   n a r g , 
 
                                         c o n s t   c h a r   *   e x t r a m s g ) ; 
 
 C o m p r u e b a   s i   c o n d   e s   v e r d a d .   S i   n o ,   g e n e r a   u n   e r r o r   c o n   e l   s i g u i e n t e   m e n s a j e ,   d o n d e   f u n c   e s   r e c u p e r a d o   d e   l a   l l a m a d a 
 
 p i l a : 
 
 
 
           m a l   a r g u m e n t o   #   < n a r g >   d e   < F U N C >   ( < e x t r a m s g > ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ a r g e r r o r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ a r g e r r o r   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   c o n s t   c h a r   *   e x t r a m s g ) ; 
 
 P r o v o c a   u n   e r r o r   c o n   e l   s i g u i e n t e   m e n s a j e ,   d o n d e   f u n c   s e   r e c u p e r a   d e   l a   p i l a   d e   l l a m a d a s : 
 
 
 
           m a l   a r g u m e n t o   #   < n a r g >   d e   < F U N C >   ( < e x t r a m s g > ) 
 
 
 
 E s t a   f u n c i  n   n u n c a   v u e l v e ,   p e r o   e s   u n   i d i o m a   p a r a   u s a r l o   e n   f u n c i o n e s   C   c o m o   l u a L _ a r g e r r o r   r e t o r n o   ( a r g s ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ B u f f e r 
 
 t y p e d e f   s t r u c t   l u a L _ B u f f e r   l u a L _ B u f f e r ; 
 
 E s c r i b a   a   u n   b  f e r   d e   c a d e n a . 
 
 
 
 U n   b  f e r   d e   c a d e n a   p e r m i t e   c  d i g o   C   p a r a   c r e a r   c a d e n a s   L u a   p o c o   a   p o c o .   S u   p a t r  n   d e   u s o   e s   e l   s i g u i e n t e : 
 
 
 
 E n   p r i m e r   l u g a r   s e   d e c l a r a   u n a   v a r i a b l e   b   d e   l u a L _ B u f f e r   t i p o . 
 
 A   c o n t i n u a c i  n ,   s e   i n i c i a l i z a   c o n   u n   l u a L _ b u f f i n i t   l l a m e   a l   ( L ,   a y b ) . 
 
 A   c o n t i n u a c i  n ,   a g r e g u e   l o s   p e d a z o s   d e   c u e r d a   a   l a   m e m o r i a   i n t e r m e d i a   l l a m a n d o   a   c u a l q u i e r a   d e   l a s   f u n c i o n e s   *   l u a L _ a d d . 
 
 U s t e d   t e r m i n a   l l a m a n d o   l u a L _ p u s h r e s u l t   ( &   b ) .   E s t a   l l a m a d a   s a l e   d e   l a   c a d e n a   f i n a l   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 D u r a n t e   s u   f u n c i o n a m i e n t o   n o r m a l ,   u n   b  f e r   d e   c a d e n a   u t i l i z a   u n   n  m e r o   v a r i a b l e   d e   l a s   r a n u r a s   d e   l a   p i l a .   A s  ,   d u r a n t e   e l   u s o   d e   u n   t a m p  n ,   n o   s e   p u e d e 
 
 s e   s u p o n e   q u e   s a b e   d  n d e   e s t    e l   t o p e   d e   l a   p i l a   e s .   P u e d e   u t i l i z a r   l a   p i l a   e n t r e   l l a m a d a s   s u c e s i v a s   a   a m o r t i g u a r   l a s   o p e r a c i o n e s   q u e 
 
 m i e n t r a s   q u e   e l   u s o   e s   e q u i l i b r a d o ,   e s   d e c i r ,   c u a n d o   s e   l l a m a   a   u n a   o p e r a c i  n   d e   b  f e r ,   l a   p i l a   e s t    a l   m i s m o   n i v e l   q u e   f u e   i n m e d i a t a m e n t e 
 
 d e s p u  s   d e   l a   o p e r a c i  n   t a m p  n   a n t e r i o r .   ( L a    n i c a   e x c e p c i  n   a   e s t a   r e g l a   e s   l u a L _ a d d v a l u e . )   D e s p u  s   d e   l l a m a r   a   l a   l u a L _ p u s h r e s u l t 
 
 p i l a   e s t    d e   v u e l t a   a   s u   n i v e l   c u a n d o   e l   b u f f e r   s e   h a   i n i c i a l i z a d o ,   a d e m  s   d e   l a   c a d e n a   f i n a l   e n   s u   p a r t e   s u p e r i o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ b u f f i n i t 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 v o i d   l u a L _ b u f f i n i t   ( l u a _ S t a t e   L   * ,   *   l u a L _ B u f f e r   B ) ; 
 
 I n i c i a l i z a   u n a   t a m p  n   B .   E s t a   f u n c i  n   n o   a s i g n a   n i n g  n   e s p a c i o ,   e l   b u f f e r   d e b e   s e r   d e c l a r a d o   c o m o   u n a   v a r i a b l e   ( v e r 
 
 l u a L _ B u f f e r ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c a l l m e t a 
 
 [ - 0 ,   +   ( 0   |   1 ) ,   e ] 
 
 
 
 i n t   l u a L _ c a l l m e t a   ( l u a _ S t a t e   L   * ,   i n t   o b j ,   c o n s t   c h a r   *   e ) ; 
 
 L l a m a   a   u n   m e t a m  t o d o . 
 
 
 
 S i   e l   o b j e t o   a   o b j    n d i c e   t i e n e   u n   m e t a t a b l a   y   e s t o   m e t a t a b l a   t i e n e   u n   c a m p o   E ,   e s t a   f u n c i  n   l l a m a   a   e s t e   c a m p o   y   p a s a   e l 
 
 o b j e t o   c o m o   s u    n i c o   a r g u m e n t o .   E n   e s t e   c a s o ,   e s t a   f u n c i  n   d e v u e l v e   1   y   e m p u j a   e n   l a   p i l a   e l   v a l o r   d e v u e l t o   p o r   l a   l l a m a d a . 
 
 S i   n o   h a y   m e t a m  t o d o   m e t a t a b l a   o   n o ,   e s t a   f u n c i  n   d e v u e l v e   0   ( s i n   e m p u j a r   c u a l q u i e r   v a l o r   e n   l a   p i l a ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k a n y 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 v o i d   l u a L _ c h e c k a n y   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   l a   f u n c i  n   t i e n e   u n   a r g u m e n t o   d e   c u a l q u i e r   t i p o   ( i n c l u y e n d o   c e r o )   e n   l a   p o s i c i  n   d e   n a r g . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k i n t 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ c h e c k i n t   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o   y   d e v u e l v e   e s t e   r e p a r t o   e l   n  m e r o   a   u n   e n t e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k i n t e g e r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 l u a _ I n t e g e r   l u a L _ c h e c k i n t e g e r   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o   y   d e v u e l v e   e s e   n  m e r o   a   u n   e l e n c o   l u a _ I n t e g e r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k l o n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 a   l a r g o   l u a L _ c h e c k l o n g   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o   y   d e v u e l v e   e s e   n  m e r o   a   u n   e l e n c o   d e   l a r g o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k l s t r i n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ c h e c k l s t r i n g   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   l   s i z e _ t   * ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n a   c a d e n a   y   d e v u e l v e   e s t a   c a d e n a ,   y   s i   l   n o   e s   N U L L   l l e n a   l   *   c o n   l a   c a d e n a   d e 
 
 l o n g i t u d . 
 
 
 
 E s t a   f u n c i  n   u t i l i z a   l u a _ t o l s t r i n g   p a r a   o b t e n e r   s u   r e s u l t a d o ,   p o r   l o   q u e   t o d a s   l a s   c o n v e r s i o n e s   y   l a s   a d v e r t e n c i a s   d e   q u e   l a   f u n c i  n   s e   a p l i c a n   a q u  . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k n u m b e r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 l u a _ N u m b e r   l u a L _ c h e c k n u m b e r   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o   y   d e v u e l v e   e s e   n  m e r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k o p t i o n 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ c h e c k o p t i o n   ( l u a _ S t a t e   L   * , 
 
                                             i n t   n a r g , 
 
                                             c o n s t   c h a r   *   d e f , 
 
                                             c o n s t   c h a r   *   c o n s t   l s t   [ ] ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n a   c a d e n a   y   b u s c a   e s t a   c a d e n a   e n   e l   a r r a y   l s t   ( q u e   d e b e   s e r 
 
 T e r m i n a d a   e n   N U L L ) .   D e v u e l v e   e l    n d i c e   d e   l a   m a t r i z   d o n d e   s e   e n c o n t r    l a   c a d e n a .   P r o v o c a   u n   e r r o r   s i   e l   a r g u m e n t o   n o   e s   u n 
 
 c a d e n a   o   s i   l a   c a d e n a   n o   s e   p u e d e   e n c o n t r a r . 
 
 
 
 S i   d e f i n i t i v a m e n t e   n o   e s   N U L L ,   l a   f u n c i  n   u s a   d e f   c o m o   u n   v a l o r   p o r   d e f e c t o   c u a n d o   n o   h a y   n a r g   a r g u m e n t o   o   s i   e s t e   a r g u m e n t o   e s   n u l o . 
 
 
 
 E s t a   e s   u n a   f u n c i  n    t i l   p a r a   e l   m a p e o   d e   l a s   c a d e n a s   a   l a s   e n u m e r a c i o n e s   C .   ( L a   c o n v e n c i  n   h a b i t u a l   e n   l a s   b i b l i o t e c a s   L u a   e s   e l   u s o   d e   c a d e n a s   e n   l u g a r 
 
 d e   l o s   n  m e r o s   p a r a   s e l e c c i o n a r   l a s   o p c i o n e s . ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k s t a c k 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 v o i d   l u a L _ c h e c k s t a c k   ( l u a _ S t a t e   L   * ,   i n t   Q u  ,   c o n s t   c h a r   *   m s g ) ; 
 
 C r e c e   e l   t a m a  o   d e   p i l a   d e   l a   p a r t e   s u p e r i o r   +   s z   e l e m e n t o s ,   g e n e r a n d o   u n   e r r o r   s i   l a   p i l a   n o   p u e d e   c r e c e r   a   e s e   t a m a  o .   m s g   e s   u n   a d i c i o n a l 
 
 d e   t e x t o   p a r a   e n t r a r   e n   e l   m e n s a j e   d e   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k s t r i n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ c h e c k s t r i n g   ( l u a _ S t a t e   L   * ,   i n t   n a r g ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n a   c a d e n a   y   d e v u e l v e   e s t a   c a d e n a . 
 
 
 
 E s t a   f u n c i  n   u t i l i z a   l u a _ t o l s t r i n g   p a r a   o b t e n e r   s u   r e s u l t a d o ,   p o r   l o   q u e   t o d a s   l a s   c o n v e r s i o n e s   y   l a s   a d v e r t e n c i a s   d e   q u e   l a   f u n c i  n   s e   a p l i c a n   a q u  . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k t y p e 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 v o i d   l u a L _ c h e c k t y p e   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   i n t   t ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   t i e n e   t i p o   t .   V  a s e   l u a _ t y p e   p a r a   l a   c o d i f i c a c i  n   d e   l o s   t i p o s   d e   t . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ c h e c k u d a t a 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 v o i d   *   l u a L _ c h e c k u d a t a   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   c o n s t   c h a r   *   t n a m e ) ; 
 
 C o m p r u e b a   s i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   u s e r d a t a   d e l   t n a m e   t i p o   ( v e r   l u a L _ n e w m e t a t a b l e ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ d o f i l e 
 
 [ - 0 ,   + ? ,   M ] 
 
 
 
 i n t   l u a L _ d o f i l e   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   f i l e n a m e ) ; 
 
 C a r g a   y   e j e c u t a   e l   a r c h i v o   d a d o .   S e   d e f i n e   c o m o   l a   m a c r o   s i g u i e n t e : 
 
 
 
           ( L u a L _ l o a d f i l e   ( L ,   n o m b r e   d e   a r c h i v o )   |   |   l u a _ p c a l l   ( L ,   0 ,   L U A _ M U L T R E T ,   0 ) ) 
 
 
 
 D e v u e l v e   0   s i   n o   h a y   e r r o r e s   o   1   e n   c a s o   d e   e r r o r e s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ d o s t r i n g 
 
 [ - 0 ,   + ? ,   M ] 
 
 
 
 i n t   l u a L _ d o s t r i n g   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   s t r ) ; 
 
 C a r g a   y   e j e c u t a   l a   c a d e n a   d a d a .   S e   d e f i n e   c o m o   l a   m a c r o   s i g u i e n t e : 
 
 
 
           ( L u a L _ l o a d s t r i n g   ( L ,   s t r )   |   |   l u a _ p c a l l   ( L ,   0 ,   L U A _ M U L T R E T ,   0 ) ) 
 
 
 
 D e v u e l v e   0   s i   n o   h a y   e r r o r e s   o   1   e n   c a s o   d e   e r r o r e s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ e r r o r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ e r r o r   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   f m t ,   . . . ) ; 
 
 P r o v o c a   u n   e r r o r .   E l   f o r m a t o   d e   m e n s a j e   d e   e r r o r   e s t    d a d o   p o r   F M T ,   a d e m  s   d e   l o s   a r g u m e n t o s   a d i c i o n a l e s ,   s i g u i e n d o   l a s   m i s m a s   r e g l a s   d e 
 
 l u a _ p u s h f s t r i n g .   T a m b i  n   a g r e g a   a l   p r i n c i p i o   d e l   m e n s a j e   e l   n o m b r e   d e l   a r c h i v o   y   e l   n  m e r o   d e   l  n e a   d o n d e   s e   p r o d u j o   e l   e r r o r , 
 
 s i   e s t a   i n f o r m a c i  n   e s t    d i s p o n i b l e . 
 
 
 
 E s t a   f u n c i  n   n u n c a   v u e l v e ,   p e r o   e s   u n   i d i o m a   p a r a   u s a r l o   e n   f u n c i o n e s   C   c o m o   l u a L _ e r r o r   r e t o r n o   ( a r g s ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ g e t m e t a f i e l d 
 
 [ - 0 ,   +   ( 0   |   1 ) ,   m ] 
 
 
 
 i n t   l u a L _ g e t m e t a f i e l d   ( l u a _ S t a t e   L   * ,   i n t   o b j ,   c o n s t   c h a r   *   e ) ; 
 
 I n s e r t a   e n   l a   p i l a   d e l   c a m p o   e   d e   l a   m e t a t a b l a   d e l   o b j e t o   e n   e l    n d i c e   d e   o b j .   S i   e l   o b j e t o   n o   t i e n e   u n   m e t a t a b l a , 
 
 o   s i   e l   m e t a t a b l a   n o   t i e n e   e s t e   c a m p o ,   d e v u e l v e   0   y   e m p u j a   n a d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ g e t m e t a t a b l e 
 
 [ 1   - 0 ,   - ] 
 
 
 
 v o i d   l u a L _ g e t m e t a t a b l e   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   t n a m e ) ; 
 
 I n s e r t a   e n   l a   p i l a   d e   l a   m e t a t a b l a   a s o c i a d o   c o n   t n a m e   n o m b r e   e n   e l   r e g i s t r o   ( v e r   l u a L _ n e w m e t a t a b l e ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ g s u b 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ g s u b   ( l u a _ S t a t e   L   * , 
 
                                               c o n s t   c h a r   *   s , 
 
                                               c o n s t   c h a r   *   p , 
 
                                               c o n s t   c h a r   *   r ) ; 
 
 C r e a   u n a   c o p i a   d e   l a   c a d e n a   s   m e d i a n t e   l a   s u s t i t u c i  n   d e   c u a l q u i e r   o c u r r e n c i a   d e   l a   c a d e n a   c o n   e l   p   r   c a d e n a .   E m p u j a   l a   c a d e n a   r e s u l t a n t e   d e 
 
 l a   p i l a   y   l o   d e v u e l v e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ l o a d b u f f e r 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 i n t   l u a L _ l o a d b u f f e r   ( l u a _ S t a t e   L   * , 
 
                                           c o n s t   c h a r   *   b u f f , 
 
                                           Q u    s i z e _ t , 
 
                                           c o n s t   c h a r   *   n a m e ) ; 
 
 C a r g a   u n   b  f e r   c o m o   u n   p e d a z o   d e   L u a .   E s t a   f u n c i  n   u t i l i z a   l u a _ l o a d   p a r a   c a r g a r   e l   t r o z o   e n   e l   b u f f e r   a p u n t a d o   p o r   p u l i r   c o n   e l   t a m a  o 
 
 Q u  . 
 
 
 
 E s t a   f u n c i  n   d e v u e l v e   l o s   m i s m o s   r e s u l t a d o s   q u e   l u a _ l o a d .   n o m b r e   e s   e l   n o m b r e   t r o z o ,   q u e   s e   u t i l i z a   p a r a   o b t e n e r   i n f o r m a c i  n   d e   d e p u r a c i  n   y   e l   e r r o r 
 
 m e n s a j e s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ l o a d f i l e 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 i n t   l u a L _ l o a d f i l e   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   n o m b r e ) ; 
 
 C a r g a   u n   a r c h i v o   c o m o   u n   p e d a z o   d e   L u a .   E s t a   f u n c i  n   u t i l i z a   l u a _ l o a d   p a r a   c a r g a r   e l   t r o z o   e n   e l   a r c h i v o   d e n o m i n a d o   n o m b r e   d e   a r c h i v o .   S i   f i l e n a m e   e s   N U L L , 
 
 a   c o n t i n u a c i  n ,   s e   c a r g a   d e s d e   l a   e n t r a d a   e s t  n d a r .   L a   p r i m e r a   l  n e a   e n   e l   a r c h i v o   s e   i g n o r a   s i   s e   c o m i e n z a   c o n   u n   # . 
 
 
 
 E s t a   f u n c i  n   d e v u e l v e   l o s   m i s m o s   r e s u l t a d o s   q u e   l u a _ l o a d ,   p e r o   t i e n e   u n   c  d i g o   d e   e r r o r   L U A _ E R R F I L E   e x t r a   s i   n o   s e   p u e d e   a b r i r   /   l e e r   e l 
 
 a r c h i v o . 
 
 
 
 C o m o   l u a _ l o a d ,   e s t a   f u n c i  n   s  l o   c a r g a   e l   t r o z o ,   s i n o   q u e   n o   l o   e j e c u t e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ l o a d s t r i n g 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 i n t   l u a L _ l o a d s t r i n g   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   s ) ; 
 
 C a r g a   u n a   c a d e n a   c o m o   u n   p e d a z o   d e   L u a .   E s t a   f u n c i  n   u t i l i z a   l u a _ l o a d   p a r a   c a r g a r   e l   t r o z o   e n   l a   c a d e n a   s   t e r m i n a d a   e n   c e r o . 
 
 
 
 E s t a   f u n c i  n   d e v u e l v e   l o s   m i s m o s   r e s u l t a d o s   q u e   l u a _ l o a d . 
 
 
 
 T a m b i  n   c o m o   l u a _ l o a d ,   e s t a   f u n c i  n   s  l o   c a r g a   e l   t r o z o ,   s i n o   q u e   n o   l o   e j e c u t e . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ n e w m e t a t a b l e 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 i n t   l u a L _ n e w m e t a t a b l e   ( l u a _ S t a t e   L   * ,   c o n s t   c h a r   *   t n a m e ) ; 
 
 S i   e l   r e g i s t r o   y a   t i e n e   l a   c l a v e   d e   t n a m e ,   d e v u e l v e   0 .   D e   l o   c o n t r a r i o ,   c r e a   u n a   n u e v a   t a b l a   p a r a   s e r   u t i l i z a d o   c o m o   u n   m e t a t a b l a   p a r a 
 
 u s e r d a t a ,   q u e   s e   s u m a   a   l a   d e l   r e g i s t r o   c o n   t n a m e   c l a v e ,   y   d e v u e l v e   1 . 
 
 
 
 E n   a m b o s   c a s o s ,   e m p u j a   e n   l a   p i l a   e l   v a l o r   f i n a l   a s o c i a d o   c o n   t n a m e   e n   e l   r e g i s t r o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ n e w s t a t e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 l u a _ S t a t e   *   l u a L _ n e w s t a t e   ( v o i d ) ; 
 
 C r e a   u n   n u e v o   e s t a d o   d e   L u a .   H a c e   u n   l l a m a m i e n t o   l u a _ n e w s t a t e   c o n   u n   a s i g n a d o r   b a s a d o   e n   l a   f u n c i  n   r e a l l o c   e s t  n d a r   d e   C   y   l u e g o   e s t a b l e c e   u n 
 
 f u n c i  n   d e   p  n i c o   ( v e r   l u a _ a t p a n i c )   q u e   i m p r i m e   u n   m e n s a j e   d e   e r r o r   a   l a   s a l i d a   e s t  n d a r   d e   e r r o r e s   e n   c a s o   d e   e r r o r e s   f a t a l e s . 
 
 
 
 D e v u e l v e   e l   n u e v o   e s t a d o ,   o   N U L L   s i   h a y   u n   e r r o r   d e   a s i g n a c i  n   d e   m e m o r i a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p e n l i b s 
 
 [ - 0 ,   0 ,   m ] 
 
 
 
 v o i d   l u a L _ o p e n l i b s   ( l u a _ S t a t e   *   L ) ; 
 
 A b r e   t o d a s   l a s   b i b l i o t e c a s   e s t  n d a r   d e   L u a   e n   e l   e s t a d o   d a d o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t i n t 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ o p t i n t   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   i n t   d ) ; 
 
 S i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o ,   r e t o r n a   e s t e   n  m e r o   a r r o j a d o   a   u n   i n t .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l a , 
 
 d e v u e l v e   d .   D e   l o   c o n t r a r i o ,   g e n e r a   u n   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t i n t e g e r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 l u a _ I n t e g e r   l u a L _ o p t i n t e g e r   ( l u a _ S t a t e   L   * , 
 
                                                           i n t   n a r g , 
 
                                                           l u a _ I n t e g e r   d ) ; 
 
 S i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n   n  m e r o ,   r e t o r n a   e s t e   n  m e r o   s e   c o n v i e r t e   a   u n a   l u a _ I n t e g e r .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l a , 
 
 d e v u e l v e   d .   D e   l o   c o n t r a r i o ,   g e n e r a   u n   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t l o n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 a   l a r g o   l u a L _ o p t l o n g   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   a   l a r g o   d ) ; 
 
 S i   e l   a r g u m e n t o   n a r g   f u n c i  n   e s   u n   n  m e r o ,   d e v u e l v e   e s t e   r e p a r t o   n  m e r o   a   u n   l a r g o .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l a , 
 
 d e v u e l v e   d .   D e   l o   c o n t r a r i o ,   g e n e r a   u n   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t l s t r i n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ o p t l s t r i n g   ( l u a _ S t a t e   L   * , 
 
                                                           i n t   n a r g , 
 
                                                           c o n s t   c h a r   *   d , 
 
                                                           *   l   s i z e _ t ) ; 
 
 S i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n a   c a d e n a ,   d e v u e l v e   e s t a   c a d e n a .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l o ,   d e v u e l v e   d .   D e   l o   c o n t r a r i o , 
 
 g e n e r a   u n   e r r o r . 
 
 
 
 S i   l   n o   e s   N U L L ,   l l e n a   e l   l   *   l a   p o s i c i  n   c o n   l a   l o n g i t u d   d e   l o s   r e s u l t a d o s   d e   P o p u l a r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t n u m b e r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 l u a _ N u m b e r   l u a L _ o p t n u m b e r   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   l u a _ N u m b e r   d ) ; 
 
 S i   e l   a r g u m e n t o   n a r g   f u n c i  n   e s   u n   n  m e r o ,   d e v u e l v e   e s t e   n  m e r o .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l o ,   d e v u e l v e   d .   D e   l o   c o n t r a r i o , 
 
 g e n e r a   u n   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ o p t s t r i n g 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ o p t s t r i n g   ( l u a _ S t a t e   L   * , 
 
                                                         i n t   n a r g , 
 
                                                         c o n s t   c h a r   *   d ) ; 
 
 S i   e l   a r g u m e n t o   d e   l a   f u n c i  n   n a r g   e s   u n a   c a d e n a ,   d e v u e l v e   e s t a   c a d e n a .   S i   e s t e   a r g u m e n t o   e s t    a u s e n t e   o   e s   n u l o ,   d e v u e l v e   d .   D e   l o   c o n t r a r i o , 
 
 g e n e r a   u n   e r r o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ p r e p b u f f e r 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 c h a r   *   l u a L _ p r e p b u f f e r   ( l u a L _ B u f f e r   *   B ) ; 
 
 D e v u e l v e   u n a   d i r e c c i  n   a   u n   e s p a c i o   d e l   t a m a  o   d e   L U A L _ B U F F E R S I Z E   d o n d e   s e   p u e d e   c o p i a r   u n a   c a d e n a   q u e   s e   a  a d e   a   b u f f e r   B   ( v  a s e   l u a L _ B u f f e r ) . 
 
 D e s p u  s   d e   c o p i a r   l a   c a d e n a   e n   e s t e   e s p a c i o   s e   d e b e   l l a m a r   l u a L _ a d d s i z e   c o n   e l   t a m a  o   d e   l a   c a d e n a   p a r a   r e a l m e n t e   a u m e n t a r   l a 
 
 t a m p  n . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ p u s h r e s u l t 
 
 [ - ,   + 1 ,   M ] 
 
 
 
 v o i d   l u a L _ p u s h r e s u l t   ( l u a L _ B u f f e r   *   B ) ; 
 
 A c a b a d o s   e l   u s o   d e   t a m p  n   B   d e j a n d o   l a   c a d e n a   f i n a l   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ r e f 
 
 [ - 1 ,   0 ,   m ] 
 
 
 
 i n t   l u a L _ r e f   ( l u a _ S t a t e   L   * ,   i n t   t ) ; 
 
 C r e a   y   d e v u e l v e   u n a   r e f e r e n c i a ,   e n   l a   t a b l a   e n   e l    n d i c e   t ,   p a r a   e l   o b j e t o   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   ( y   a p a r e c e   e l   o b j e t o ) . 
 
 
 
 U n a   r e f e r e n c i a   e s   u n a   c l a v e   d e   e n t e r o    n i c o .   S i e m p r e   y   c u a n d o   n o   a g r e g a r   m a n u a l m e n t e   c l a v e s   e n t e r a s   e n   l a   t a b l a   T ,   l u a L _ r e f   a s e g u r a   l a 
 
 u n i c i d a d   d e   l a   c l a v e   d e   q u e   v u e l v a .   P u e d e   r e c u p e r a r   u n   o b j e t o   c o n t e m p l a d o   p o r   l a   r e f e r e n c i a   r   l l a m a n d o   l u a _ r a w g e t i   ( L ,   t ,   r ) . 
 
 L u a L _ u n r e f   F u n c i  n   l i b e r a   u n a   r e f e r e n c i a   y   s u   o b j e t o   a s o c i a d o . 
 
 
 
 S i   e l   o b j e t o   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a   e s   n u l a ,   l u a L _ r e f   d e v u e l v e   e l   L U A _ R E F N I L   c o n s t a n t e .   E l   L U A _ N O R E F   c o n s t a n t e   e s 
 
 g a r a n t i z a   q u e   s e a   d i f e r e n t e   d e   c u a l q u i e r   r e f e r e n c i a   d e v u e l t a   p o r   l u a L _ r e f . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ R e g 
 
 l u a L _ R e g   t y p e d e f   s t r u c t   { 
 
     c o n s t   c h a r   *   n o m b r e ; 
 
     l u a _ C F u n c t i o n   f u n c i o n e s ; 
 
 L u a L _ R e g } ; 
 
 E s c r i b a   p a r a   l a s   m a t r i c e s   d e   f u n c i o n e s   p a r a   s e r   r e g i s t r a d o s   p o r   l u a L _ r e g i s t e r .   n o m b r e   e s   e l   n o m b r e   d e   l a   f u n c i  n   y   l a   f u n c i  n   e s   u n   p u n t e r o   a   l a 
 
 f u n c i  n .   C u a l q u i e r   v a r i e d a d   d e   l u a L _ R e g   d e b e   t e r m i n a r   c o n   u n a   e n t r a d a   d e   c e n t i n e l a   e n   l a   q u e   e l   n o m b r e   y   f u n c i  n   s o n   N U L L . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ r e g i s t e r 
 
 [ -   ( 0   |   1 ) ,   1 ,   m ] 
 
 
 
 v o i d   l u a L _ r e g i s t e r   ( l u a _ S t a t e   L   * , 
 
                                         c o n s t   c h a r   *   l i b n a m e , 
 
                                         c o n s t   l u a L _ R e g   *   l ) ; 
 
 S e   a b r e   u n a   b i b l i o t e c a . 
 
 
 
 C u a n d o   s e   i n v o c a   c o n   l i b n a m e   i g u a l   a   N U L L ,   s i m p l e m e n t e   r e g i s t r a   t o d a s   l a s   f u n c i o n e s   e n   l a   l i s t a   l   ( v e r   l u a L _ R e g )   e n   l a   t a b l a   d e   l a 
 
 l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 C u a n d o   s e   i n v o c a   c o n   u n   l i b n a m e   n o   n u l o ,   l u a L _ r e g i s t e r   c r e a   u n a   n u e v a   t a b l a   t ,   l o   e s t a b l e c e   c o m o   e l   v a l o r   d e   l a   v a r i a b l e   g l o b a l 
 
 l i b n a m e ,   s e   e s t a b l e c e   c o m o   e l   v a l o r   d e   p a c k a g e . l o a d e d   [ l i b n a m e ] ,   y   r e g i s t r a   e n    l   t o d a s   l a s   f u n c i o n e s   e n   l a   l i s t a   l .   S i   h a y   u n 
 
 t a b l a   d e   p a c k a g e . l o a d e d   [ l i b n a m e ]   o   e n   l i b n a m e   v a r i a b l e ,   r e u t i l i z a   e s t a   t a b l a   e n   l u g a r   d e   c r e a r   u n o   n u e v o . 
 
 
 
 E n   c u a l q u i e r   c a s o ,   l a   f u n c i  n   d e j a   l a   m e s a   e n   l a   p a r t e   s u p e r i o r   d e   l a   p i l a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ t y p e n a m e 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 c o n s t   c h a r   *   l u a L _ t y p e n a m e   ( l u a _ S t a t e   L   * ,   i n t   i n d e x ) ; 
 
 D e v u e l v e   e l   n o m b r e   d e l   t i p o   d e l   v a l o r   e n   e l    n d i c e   d a d o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ t y p e r r o r 
 
 [ - 0 ,   0 ,   v ] 
 
 
 
 i n t   l u a L _ t y p e r r o r   ( l u a _ S t a t e   L   * ,   i n t   n a r g ,   c o n s t   c h a r   *   t n a m e ) ; 
 
 G e n e r a   u n   e r r o r   c o n   u n   m e n s a j e   c o m o   e l   s i g u i e n t e : 
 
 
 
           U b i c a c i  n :   n a r g   m a l   a r g u m e n t o   d e   ' f u n c i o n e s '   ( t n a m e   e r a   d e   e s p e r a r ,   s e   r t ) 
 
 
 
 d o n d e   l a   l o c a l i z a c i  n   e s   p r o d u c i d a   p o r   l u a L _ w h e r e ,   f u n c   e s   e l   n o m b r e   d e   l a   f u n c i  n   a c t u a l ,   y   r t   e s   e l   n o m b r e   d e l   t i p o   d e   l a   a c t u a l 
 
 a r g u m e n t o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ u n r e f 
 
 [ + 0   - 0 ,   - ] 
 
 
 
 v o i d   l u a L _ u n r e f   ( l u a _ S t a t e   L   * ,   i n t   t ,   i n t   r e f ) ; 
 
 C o m u n i c a d o s   d e   r e f e r e n c i a   r e f   d e   l a   t a b l a   e n   e l    n d i c e   t   ( v e r   l u a L _ r e f ) .   L a   e n t r a d a   s e   q u i t a   d e   l a   t a b l a ,   p o r   l o   q u e   s e   r e f i e r e   e l 
 
 o b j e t o   p u e d e   s e r   r e c o g i d a .   E l    r b i t r o   d e   r e f e r e n c i a   t a m b i  n   s e   l i b e r    a   s e r   u t i l i z a d o   d e   n u e v o . 
 
 
 
 S i   r e f   e s   L U A _ N O R E F   o   L U A _ R E F N I L ,   l u a L _ u n r e f   n o   h a c e   n a d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l u a L _ w h e r e 
 
 [ - 0 ,   1 ,   m ] 
 
 
 
 v o i d   l u a L _ w h e r e   ( l u a _ S t a t e   L   * ,   i n t   l v l ) ; 
 
 I n s e r t a   e n   l a   p i l a   u n a   c a d e n a   q u e   i d e n t i f i c a   l a   p o s i c i  n   a c t u a l   d e l   c o n t r o l   e n   l v l   n i v e l   e n   l a   p i l a   d e   l l a m a d a s .   T  p i c a m e n t e 
 
 e s t a   c a d e n a   t i e n e   e l   s i g u i e n t e   f o r m a t o : 
 
 
 
           c h u n k n a m e :   c u r r e n t l i n e : 
 
 
 
 E l   n i v e l   0   e s   l a   f u n c i  n   d e   e j e c u c i  n ,   n i v e l   1   e s   l a   f u n c i  n   q u e   l l a m a   a   l a   f u n c i  n   e n   e j e c u c i  n ,   e t c 
 
 
 
 E s t a   f u n c i  n   s e   u t i l i z a   p a r a   c o n s t r u i r   u n   p r e f i j o   p a r a   m e n s a j e s   d e   e r r o r . 
 
 
 
 5   -   L a s   b i b l i o t e c a s   e s t  n d a r 
 
 L a s   b i b l i o t e c a s   e s t  n d a r   d e   L u a   o f r e c e n   f u n c i o n e s    t i l e s   q u e   s e   a p l i c a n   d i r e c t a m e n t e   a   t r a v  s   d e   l a   A P I   C .   A l g u n a s   d e   e s t a s   f u n c i o n e s 
 
 p r o p o r c i o n a r   s e r v i c i o s   e s e n c i a l e s   a   l a   l e n g u a   ( p o r   e j e m p l o ,   e l   t i p o   y   g e t m e t a t a b l e ) ,   m i e n t r a s   q u e   o t r o s   p r o p o r c i o n a n   a c c e s o   a   l o s   s e r v i c i o s   d e   " f u e r a "   ( p o r   e j e m p l o , 
 
 E   /   S ) ,   y   o t r o s   p o d r  a n   s e r   i m p l e m e n t a d a s   e n   L u a   s    m i s m o ,   p e r o   s o n   m u y    t i l e s   o   t i e n e n   r e q u i s i t o s   c r  t i c o s   d e   r e n d i m i e n t o   q u e 
 
 m e r e c e n   u n a   i m p l e m e n t a c i  n   e n   C   ( p o r   e j e m p l o ,   t a b l e . s o r t ) . 
 
 
 
 T o d a s   l a s   b i b l i o t e c a s   s e   i m p l e m e n t a n   a   t r a v  s   d e   l a   A P I   o f i c i a l   d e   C   y   s e   p r o p o r c i o n a n   c o m o   m  d u l o s   s e p a r a d o s   C .   A c t u a l m e n t e ,   L u a   t i e n e   e l 
 
 d e s p u  s   d e   l a s   b i b l i o t e c a s   e s t  n d a r : 
 
 
 
 b i b l i o t e c a   b  s i c a ,   q u e   i n c l u y e   l a   c o - r u t i n a   s u b - b i b l i o t e c a ; 
 
 p a q u e t e   d e   l a   b i b l i o t e c a ; 
 
 d e   m a n i p u l a c i  n   d e   c a d e n a s ; 
 
 m e s a   d e   l a   m a n i p u l a c i  n ; 
 
 f u n c i o n e s   m a t e m  t i c a s   ( s i n ,   r e g i s t r o ,   e t c ) ; 
 
 e n t r a d a   y   s a l i d a ; 
 
 q u e   o p e r a n   l a s   i n s t a l a c i o n e s   d e l   s i s t e m a ; 
 
 d e p u r a c i  n   d e   l a s   i n s t a l a c i o n e s . 
 
 A   e x c e p c i  n   d e   l a s   b i b l i o t e c a s   b  s i c a s   y   d e   p a q u e t e s ,   c a d a   b i b l i o t e c a   p r o p o r c i o n a   t o d a s   s u s   f u n c i o n e s   c o m o   c a m p o s   d e   u n a   t a b l a   g l o b a l   o   c o m o 
 
 l o s   m  t o d o s   d e   s u s   o b j e t o s . 
 
 
 
 P a r a   t e n e r   a c c e s o   a   e s t a s   b i b l i o t e c a s ,   e l   p r o g r a m a   d e   a c o g i d a   C   d e b e   l l a m a r   a   l a   f u n c i  n   l u a L _ o p e n l i b s ,   q u e   a b r e   t o d o s   l o s   e s t  n d a r e s 
 
 b i b l i o t e c a s .   A l t e r n a t i v a m e n t e ,   s e   p u e d e   a b r i r   i n d i v i d u a l m e n t e   l l a m a n d o   l u a o p e n _ b a s e   ( p a r a   l a   b i b l i o t e c a   d e   b a s e ) ,   l u a o p e n _ p a c k a g e 
 
 ( P a r a   l a   b i b l i o t e c a   d e l   p a q u e t e ) ,   l u a o p e n _ s t r i n g   ( p a r a   l a   b i b l i o t e c a   d e   c a d e n a ) ,   l u a o p e n _ t a b l e   ( p a r a   l a   b i b l i o t e c a   d e   l a   t a b l a ) ,   l u a o p e n _ m a t h 
 
 ( P a r a   l a   b i b l i o t e c a   m a t e m  t i c a ) ,   l u a o p e n _ i o   ( p a r a   l a   b i b l i o t e c a   d e   E   /   S ) ,   l u a o p e n _ o s   ( p a r a   l a   b i b l i o t e c a   d e l   s i s t e m a   o p e r a t i v o ) ,   y 
 
 l u a o p e n _ d e b u g   ( p a r a   l a   b i b l i o t e c a   d e   d e p u r a c i  n ) .   E s t a s   f u n c i o n e s   e s t  n   d e c l a r a d a s   e n   l u a l i b . h   y   n o   s e   d e b e   l l a m a r   d i r e c t a m e n t e :    T i e n e s   q u e 
 
 l l a m a d a   d e   e l l o s   c o m o   c u a l q u i e r   o t r a   f u n c i  n   L u a   C ,   p o r   e j e m p l o ,   m e d i a n t e   e l   u s o   d e   l u a _ c a l l . 
 
 
 
 5 . 1   -   F u n c i o n e s   b  s i c a s 
 
 L a   b i b l i o t e c a   b  s i c a   p r o p o r c i o n a   a l g u n a s   f u n c i o n e s   b  s i c a s   p a r a   L u a .   S i   n o   s e   i n c l u y e   e s t a   b i b l i o t e c a   e n   s u   s o l i c i t u d ,   u s t e d   d e b e 
 
 c o m p r o b a r   c u i d a d o s a m e n t e   s i   e s   n e c e s a r i o   p r o p o r c i o n a r   i m p l e m e n t a c i o n e s   p a r a   a l g u n o s   d e   s u s   i n s t a l a c i o n e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a s s e r t   ( v   [ ,   m e n s a j e ] ) 
 
 E m i t e   u n   e r r o r   c u a n d o   e l   v a l o r   d e   s u   a r g u m e n t o   v   e s   f a l s o   ( e s   d e c i r ,   n u l a   o   f a l s a ) ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   t o d o s   s u s   a r g u m e n t o s . 
 
 m e n s a j e   e s   u n   m e n s a j e   d e   e r r o r ,   c u a n d o   e s t    a u s e n t e ,   e l   v a l o r   p r e d e t e r m i n a d o   " e r r o r   d e   a s e r c i  n ! " 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o l l e c t g a r b a g e   ( [ O P T   [ ,   a r g ] ] ) 
 
 E s t a   f u n c i  n   e s   u n a   i n t e r f a z   g e n  r i c a   p a r a   e l   r e c o l e c t o r   d e   b a s u r a .   S e   r e a l i z a   f u n c i o n e s   d i f e r e n t e s   d e   a c u e r d o   c o n   s u   p r i m e r a 
 
 a r g u m e n t o ,   o p c i o n a l : 
 
 
 
 " C o l l e c t " :   r e a l i z a   u n   c o m p l e t o   c i c l o   d e   r e c o l e c c i  n   d e   b a s u r a .   E s t a   e s   l a   o p c i  n   p o r   d e f e c t o . 
 
 " S t o p " :   p a r a   e l   r e c o l e c t o r   d e   b a s u r a . 
 
 " R e s t a r t " :   r e i n i c i a   e l   r e c o l e c t o r   d e   b a s u r a . 
 
 " C o n t a r " :   d e v u e l v e   e l   t o t a l   d e   l a   m e m o r i a   e n   u s o   p o r   L u a   ( e n   K b y t e s ) . 
 
 " P a s o " :   l l e v a   a   c a b o   u n   p a s o   d e   r e c o l e c c i  n   d e   b a s u r a .   E l   p a s o   d e   " t a m a  o "   e s   c o n t r o l a d a   p o r   a r g   ( v a l o r e s   m a y o r e s   s i g n i f i c a n   m  s   p a s o s )   e n   u n 
 
 n o   e s p e c i f i c a d o   m a n e r a .   S i   d e s e a   c o n t r o l a r   e l   t a m a  o   d e l   p a s o   q u e   e x p e r i m e n t a l m e n t e   d e b e   a j u s t a r   e l   v a l o r   d e   a r g .   D e v u e l v e   t r u e   s i   e l 
 
 p a s o   d e   t e r m i n a r   u n   c i c l o   d e   r e c o l e c c i  n . 
 
 " S e t p a u s e " :   e s t a b l e c e   a r g   c o m o   e l   n u e v o   v a l o r   p a r a   l a   p a u s a   d e l   c o l e c t o r   ( v  a s e      2 . 1 0 ) .   D e v u e l v e   e l   v a l o r   a n t e r i o r   p a r a   u n a   p a u s a . 
 
 " S e t s t e p m u l " :   e s t a b l e c e   a r g   c o m o   e l   n u e v o   v a l o r   p a r a   e l   m u l t i p l i c a d o r   d e   p a s o   d e l   c o l e c t o r   ( v  a s e      2 . 1 0 ) .   D e v u e l v e   e l   v a l o r   a n t e r i o r 
 
 p a r a   e l   p a s o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d o f i l e   ( [ n o m b r e   d e   a r c h i v o ] ) 
 
 A b r e   e l   a r c h i v o   c o n   e l   n o m b r e   y   e j e c u t a   s u   c o n t e n i d o ,   c o m o   u n   t r o z o   d e   L u a .   C u a n d o   s e   i n v o c a   s i n   a r g u m e n t o s ,   s e   e j e c u t a   e l   c o n t e n i d o   d o f i l e 
 
 d e   l a   e n t r a d a   e s t  n d a r   ( s t d i n ) .   D e v u e l v e   t o d o s   l o s   v a l o r e s   d e v u e l t o s   p o r   e l   p e d a z o .   E n   c a s o   d e   e r r o r e s ,   d o f i l e   p r o p a g a   e l   e r r o r   a 
 
 l a   p e r s o n a   q u e   l l a m a   ( e s   d e c i r ,   d o f i l e   n o   s e   e j e c u t a   e n   m o d o   p r o t e g i d o ) . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 e r r o r   ( m e n s a j e   [ ,   n i v e l ] ) 
 
 T e r m i n a   l a    l t i m a   f u n c i  n   p r o t e g i d a   l l a m a d a   y   d e v u e l v e   u n   m e n s a j e   c o m o   e l   m e n s a j e   d e   e r r o r .   F u n c i  n   d e   e r r o r   n o   v u e l v e   n u n c a . 
 
 P o r   l o   g e n e r a l ,   e l   e r r o r   a  a d e   a l g u n a   i n f o r m a c i  n   s o b r e   l a   p o s i c i  n   d e l   e r r o r   a l   c o m i e n z o   d e l   m e n s a j e .   E l   a r g u m e n t o   e s p e c i f i c a   e l   n i v e l 
 
 c  m o   o b t e n e r   l a   p o s i c i  n   d e l   e r r o r .   C o n   e l   n i v e l   1   ( p o r   d e f e c t o ) ,   l a   p o s i c i  n   d e l   e r r o r   e s   d o n d e   l a   f u n c i  n   d e   e r r o r   s e   l l a m a b a .   N i v e l 
 
 2   p u n t o s   a   l a   d e   e r r o r   d o n d e   l a   f u n c i  n   q u e   l l a m a   e r r o r   f u e   l l a m a d a ,   y   a s    s u c e s i v a m e n t e .   P a s a n d o   u n   n i v e l   0   e v i t a   l a   a d i c i  n   d e 
 
 e r r o r   d e   i n f o r m a c i  n   d e   p o s i c i  n   p a r a   e l   m e n s a j e . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 _ g 
 
 U n a   v a r i a b l e   g l o b a l   ( n o   u n a   f u n c i  n )   q u e   m a n t i e n e   e l   m e d i o   a m b i e n t e   m u n d i a l   ( e s   d e c i r ,   _ G . _ G   =   _ G ) .   L u a   e n   s    m i s m a   n o   h a c e   u s o   d e   e s t e 
 
 v a r i a b l e ,   c a m b i a n d o   s u   v a l o r   n o   a f e c t a   a   c u a l q u i e r   e n t o r n o ,   n i   v i c e v e r s a .   ( U t i l i c e   s e t f e n v   p a r a   c a m b i a r   l o s   a m b i e n t e s . ) 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 g e t f e n v   ( [ f ] ) 
 
 D e v u e l v e   e l   e n t o r n o   a c t u a l   e n   e l   u s o   d e   l a   f u n c i  n .   f   p u e d e   s e r   u n a   f u n c i  n   L u a   o   u n   n  m e r o   q u e   e s p e c i f i c a   l a   f u n c i  n   e n 
 
 q u e   e l   n i v e l   d e   p i l a :   E l   n i v e l   1   e s   l a   f u n c i  n   d e   l l a m a d a   g e t f e n v .   S i   l a   f u n c i  n   d a d a   n o   e s   u n a   f u n c i  n   L u a ,   o ,   s i   f   e s   0 
 
 g e t f e n v   d e v u e l v e   e l   m e d i o   a m b i e n t e   m u n d i a l .   E l   v a l o r   p r e d e t e r m i n a d o   d e   f   e s   1 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 g e t m e t a t a b l e   ( o b j e t o ) 
 
 S i   e l   o b j e t o   n o   t i e n e   u n   m e t a t a b l a ,   d e v u e l v e   n i l .   E n   c a s o   c o n t r a r i o ,   s i   m e t a t a b l a   d e l   o b j e t o   t i e n e   u n a   " _ _ m e t a t a b l e "   c a m p o ,   d e v u e l v e 
 
 e l   v a l o r   a s o c i a d o .   D e   l o   c o n t r a r i o ,   d e v u e l v e   e l   m e t a t a b l a   d e l   o b j e t o   d a d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i p a i r s   ( t ) 
 
 D e v o l u c i o n e s   t r e s   v a l o r e s :   u n a   f u n c i  n   d e   i t e r a d o r ,   l a   t a b l a   t ,   y   0 ,   d e   m o d o   q u e   l a   c o n s t r u c c i  n 
 
 
 
           p a r a   i ,   v   e n   i p a i r s   ( t )   t e r m i n a n   e l   c u e r p o 
 
 
 
 s e   r e p e t i r    e n   l o s   p a r e s   ( 1 ,   t   [ 1 ] ) ,   ( 2 ,   t   [ 2 ] ) ,          ,   h a s t a   l a   l l a v e   d e   p r i m e r   e n t e r o   a u s e n t e   d e   l a   m e s a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c a r g a   ( f u n c   [ ,   c h u n k n a m e ] ) 
 
 C a r g a   u n   t r o z o   c o n   f u n c i  n   f u n c   p a r a   o b t e n e r   s u s   p i e z a s .   C a d a   l l a m a d a   a   f u n c   d e b e   d e v o l v e r   u n a   c a d e n a   q u e   s e   c o n c a t e n a   c o n   p r e v i a 
 
 r e s u l t a d o s .   E l   r e t o r n o   d e   u n a   c a d e n a   v a c  a ,   e l   v a l o r   n u l o ,   o   n o   s e  a l a   e l   f i n a l   d e l   f r a g m e n t o . 
 
 
 
 S i   n o   h a y   e r r o r e s ,   d e v u e l v e   e l   t r o z o   c o m p i l a d o   c o m o   u n a   f u n c i  n ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   n i l ,   m  s   e l   m e n s a j e   d e   e r r o r .   L a 
 
 a m b i e n t e   d e   l a   f u n c i  n   d e v u e l v e   e s   e l   m e d i o   a m b i e n t e   m u n d i a l . 
 
 
 
 c h u n k n a m e   s e   u t i l i z a   c o m o   e l   n o m b r e   d e   p o r c i  n   p a r a   m e n s a j e s   d e   e r r o r   e   i n f o r m a c i  n   d e   d e p u r a c i  n .   C u a n d o   e s t    a u s e n t e ,   e l   v a l o r   p r e d e t e r m i n a d o   e s   " =   ( c a r g a ) " . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l o a d f i l e   ( [ n o m b r e   d e   a r c h i v o ] ) 
 
 S i m i l a r   a   l a   c a r g a ,   p e r o   s e   p o n e   e l   t r o z o   d e   n o m b r e   d e   a r c h i v o   o   d e   l a   e n t r a d a   e s t  n d a r ,   s i   n o   s e   l e   d a   e l   n o m b r e   d e   a r c h i v o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l o a d S t r i n g   ( c a d e n a   [ ,   c h u n k n a m e ] ) 
 
 S i m i l a r   a   l a   c a r g a ,   p e r o   s e   p o n e   e l   t r o z o   d e   l a   c a d e n a   d a d a . 
 
 
 
 P a r a   c a r g a r   y   e j e c u t a r   u n a   d e t e r m i n a d a   c a d e n a ,   u t i l i c e   e l   i d i o m a 
 
 
 
           a s s e r t   ( L o a d S t r i n g   ( s ) )   ( ) 
 
 
 
 C u a n d o   p o r   d e f e c t o   a u s e n t e s ,   c h u n k n a m e   a   l a   c a d e n a   d a d a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s i g u i e n t e   ( t a b l a   [ ,    n d i c e ] ) 
 
 P e r m i t e   a   u n   p r o g r a m a   p a r a   r e c o r r e r   t o d o s   l o s   c a m p o s   d e   u n a   t a b l a .   S u   p r i m e r   a r g u m e n t o   e s   u n a   t a b l a   y   s u   s e g u n d o   a r g u m e n t o   e s   u n    n d i c e   e n 
 
 e s t a   t a b l a .   s i g u i e n t e   d e v u e l v e   e l   s i g u i e n t e    n d i c e   d e   l a   t a b l a   y   s u   v a l o r   a s o c i a d o .   C u a n d o   s e   i n v o c a   c o n   n i l   c o m o   s e g u n d o   a r g u m e n t o , 
 
 s i g u i e n t e   d e v u e l v e   u n    n d i c e   i n i c i a l   y   s u   v a l o r   a s o c i a d o .   C u a n d o   s e   i n v o c a   c o n   e l    l t i m o    n d i c e ,   o   c o n   c e r o   e n   u n a   m e s a   v a c  a ,   a l   l a d o   d e 
 
 d e v u e l v e   n i l .   S i   e l   s e g u n d o   a r g u m e n t o   e s t    a u s e n t e ,   e n t o n c e s   s e   i n t e r p r e t a   c o m o   n u l a .   E n   p a r t i c u l a r ,   s e   p u e d e   u s a r   a   c o n t i n u a c i  n   ( t )   p a r a   c o m p r o b a r 
 
 s i   u n a   t a b l a   e s t    v a c  a . 
 
 
 
 E l   o r d e n   e n   q u e   l o s    n d i c e s   s e   e n u m e r a n   n o   s e   e s p e c i f i c a ,   i n c l u s o   p a r a   l o s    n d i c e s   n u m  r i c o s .   ( P a r a   a t r a v e s a r   u n a   t a b l a   e n   n u m  r i c o 
 
 f i n ,   u t i l i z a r   u n   n u m  r i c o   p a r a   l a   f u n c i  n   o   i p a i r s . ) 
 
 
 
 E l   c o m p o r t a m i e n t o   d e   l a   p r  x i m a   n o   e s t    d e f i n i d o   s i ,   d u r a n t e   e l   r e c o r r i d o ,   s e   a s i g n a   u n   v a l o r   a   u n   c a m p o   q u e   n o   e x i s t e   e n   l a   t a b l a .   U s t e d 
 
 S i n   e m b a r g o ,   p u e d e   m o d i f i c a r   l o s   c a m p o s   e x i s t e n t e s .   E n   p a r t i c u l a r ,   e s   p o s i b l e   b o r r a r   l o s   c a m p o s   e x i s t e n t e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a r e s   ( t ) 
 
 D e v o l u c i o n e s   t r e s   v a l o r e s :   l a   f u n c i  n   s i g u i e n t e ,   l a   t a b l a   t ,   y   c e r o ,   d e   m o d o   q u e   l a   c o n s t r u c c i  n 
 
 
 
           p a r a   k ,   v   e n   p a r e s   ( t )   t e r m i n a n   e l   c u e r p o 
 
 
 
 s e   r e p e t i r    e n   t o d o s   l o s   p a r e s   c l a v e - v a l o r   d e   l a   t a b l a   t . 
 
 
 
 V e r   l a   s i g u i e n t e   f u n c i  n   d e   l a s   a d v e r t e n c i a s   d e   l a   m o d i f i c a c i  n   d e   l a   t a b l a   d u r a n t e   s u   r e c o r r i d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 P C A L L   ( f ,   a r g 1 ,          ) 
 
 L l a m a   a   l a   f u n c i  n   f   c o n   l o s   a r g u m e n t o s   d a d o s   e n   m o d o   p r o t e g i d o .   E s t o   s i g n i f i c a   q u e   c u a l q u i e r   e r r o r   d e n t r o   d e   f   n o   s e   p r o p a g a ,   e n   s u   l u g a r , 
 
 p c a l l   d e t e c t a   e l   e r r o r   y   d e v u e l v e   u n   c  d i g o   d e   e s t a d o .   S u   p r i m e r   r e s u l t a d o   e s   e l   c  d i g o   d e   e s t a d o   ( u n   b o o l e a n o ) ,   l o   c u a l   e s   c i e r t o   s i   l a 
 
 l l a m a d a   s e   r e a l i z a   c o r r e c t a m e n t e   s i n   e r r o r e s .   E n   t a l   c a s o ,   p c a l l   t a m b i  n   d e v u e l v e   t o d o s   l o s   r e s u l t a d o s   d e   l a   l l a m a d a ,   d e s p u  s   d e   e s t e   p r i m e r   r e s u l t a d o .   E n   c a s o 
 
 d e   c u a l q u i e r   e r r o r ,   d e v u e l v e   f a l s e   p c a l l   m  s   e l   m e n s a j e   d e   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i m p r e s i  n   (        ) 
 
 R e c i b e   c u a l q u i e r   n  m e r o   d e   a r g u m e n t o s ,   e   i m p r i m e   s u s   v a l o r e s   a   l a   s a l i d a   e s t  n d a r ,   u s a n d o   l a   f u n c i  n   T o S t r i n g   p a r a   c o n v e r t i r l o s   e n 
 
 c a d e n a s .   d e   i m p r e s i  n   n o   e s t    d i s e  a d o   p a r a   l a   s a l i d a   c o n   f o r m a t o ,   p e r o   s  l o   c o m o   u n a   f o r m a   r  p i d a   p a r a   m o s t r a r   u n   v a l o r ,   p o r   l o   g e n e r a l   p a r a   l a   d e p u r a c i  n .   P a r a 
 
 f o r m a t o   d e   s a l i d a ,   u s e   S t r i n g . F o r m a t . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 r a w e q u a l   ( v 1 ,   v 2 ) 
 
 C o m p r u e b a   s i   v 1   e s   i g u a l   a   v 2 ,   s i n   i n v o c a r   n i n g  n   m e t a m  t o d o .   D e v u e l v e   u n   b o o l e a n o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 r a w g e t   ( t a b l a ,    n d i c e ) 
 
 O b t i e n e   e l   v a l o r   r e a l   d e   l a   t a b l a   [ i n d i c e ] ,   s i n   i n v o c a r   n i n g  n   m e t a m  t o d o .   t a b l a   d e b e   s e r   u n a   t a b l a ,   e l    n d i c e   p u e d e   s e r   c u a l q u i e r   v a l o r . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 r a w s e t   ( t a b l a ,    n d i c e ,   v a l o r ) 
 
 E s t a b l e c e   e l   v a l o r   r e a l   d e   l a   t a b l a   [ i n d i c e ]   c o n   e l   v a l o r ,   s i n   i n v o c a r   n i n g  n   m e t a m  t o d o .   t a b l a   d e b e   s e r   u n a   t a b l a ,   e l    n d i c e   d e   c u a l q u i e r   v a l o r 
 
 d i f e r e n t e   d e   c e r o ,   y   e l   v a l o r   d e   c u a l q u i e r   v a l o r   L u a . 
 
 E s t a   f u n c i  n   d e v u e l v e   l a   t a b l a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s e l e c c i o n a r   (  n d i c e ,          ) 
 
 S i   e l    n d i c e   e s   u n   n  m e r o ,   d e v u e l v e   t o d o s   l o s   a r g u m e n t o s   d e s p u  s   d e l    n d i c e   d e   a r g u m e n t o   n  m e r o .   D e   l o   c o n t r a r i o ,   e l    n d i c e   d e b e   s e r   u n a   c a d e n a   " # " ,   y 
 
 S e l e c t   d e v u e l v e   e l   n  m e r o   t o t a l   d e   a r g u m e n t o s   a d i c i o n a l e s   q u e   h a   r e c i b i d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s e t f e n v   ( f ,   t a b l a ) 
 
 E s t a b l e c e   e l   e n t o r n o   p a r a   s e r   u t i l i z a d o   p o r   l a   f u n c i  n   d a d a .   f   p u e d e   s e r   u n a   f u n c i  n   L u a   o   u n   n  m e r o   q u e   e s p e c i f i c a   l a   f u n c i  n   e n 
 
 q u e   e l   n i v e l   d e   p i l a :   E l   n i v e l   1   e s   l a   f u n c i  n   d e   l l a m a d a   s e t f e n v .   s e t f e n v   d e v u e l v e   l a   f u n c i  n   d a d a . 
 
 
 
 C o m o   c a s o   e s p e c i a l ,   c u a n d o   f   e s   0   c a m b i o s   s e t f e n v   e l   m e d i o   a m b i e n t e   d e l   h i l o   c o n d u c t o r .   E n   e s t e   c a s o ,   s e t f e n v   d e v u e l v e   n i n g u n a 
 
 v a l o r e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s e t m e t a t a b l e   ( m e s a ,   m e t a t a b l a ) 
 
 E s t a b l e c e   e l   m e t a t a b l a   d e   l a   t a b l a   d a d a .   ( N o   s e   p u e d e   c a m b i a r   l a   m e t a t a b l a   d e   o t r o s   t i p o s   d e   L u a ,   s  l o   d e   C . )   S i 
 
 m e t a t a b l a   e s   n u l a ,   e l i m i n a   l a   m e t a t a b l a   d e   l a   t a b l a   d a d a .   S i   e l   o r i g i n a l   t i e n e   u n   m e t a t a b l a   " _ _ m e t a t a b l e   c a m p o " ,   p l a n t e a   u n a 
 
 e r r o r . 
 
 
 
 E s t a   f u n c i  n   d e v u e l v e   l a   t a b l a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t o n u m b e r   ( e   [ ,   b a s e ] ) 
 
 I n t e n t a   c o n v e r t i r   s u   a r g u m e n t o   e n   u n   n  m e r o .   S i   e l   a r g u m e n t o   e s   y a   u n   n  m e r o   o   u n a   c a d e n a   c o n v e r t i b l e   a   u n   n  m e r o ,   a   c o n t i n u a c i  n , 
 
 t o n u m b e r   d e v u e l v e   e s t e   n  m e r o ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   c e r o . 
 
 U n   a r g u m e n t o   o p c i o n a l   e s p e c i f i c a   l a   b a s e   p a r a   i n t e r p r e t a r   e l   n  m e r o .   L a   b a s e   p u e d e   s e r   c u a l q u i e r   n  m e r o   e n t e r o   e n t r e   2   y   3 6 ,   a m b o s   i n c l u s i v e .   E n 
 
 b a s e s   p o r   e n c i m a   d e   1 0 ,   l a   l e t r a   ' A '   ( e n   c u a l q u i e r   c a s o   s u p e r i o r   o   i n f e r i o r )   r e p r e s e n t a   e l   1 0 ,   " B "   r e p r e s e n t a   e l   1 1 ,   y   a s    s u c e s i v a m e n t e ,   c o n   l a   ' Z ' 
 
 q u e   r e p r e s e n t a   e l   3 5 .   E n   b a s e   1 0   ( e l   p r e d e t e r m i n a d o ) ,   e l   n  m e r o   p u e d e   t e n e r   u n a   p a r t e   d e c i m a l ,   a s    c o m o   u n a   p a r t e   e x p o n e n t e   o p c i o n a l 
 
 ( V  a s e      2 . 1 ) .   E n   o t r a s   b a s e s ,   s  l o   s e   a c e p t a n   n  m e r o s   e n t e r o s   s i n   s i g n o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 T o S t r i n g   ( e ) 
 
 R e c i b e   u n   a r g u m e n t o   d e   c u a l q u i e r   t i p o   y   l a   c o n v i e r t e   e n   u n a   c a d e n a   e n   u n   f o r m a t o   r a z o n a b l e .   P a r a   u n   c o n t r o l   c o m p l e t o   d e   l a   c a n t i d a d   d e   n  m e r o s 
 
 s e   c o n v i e r t e n ,   u s e   S t r i n g . F o r m a t . 
 
 S i   l a   m e t a t a b l a   d e   c o r r e o   t i e n e   u n a   " _ _ t o S t r i n g " ,   d e s p u  s   t o s t r i n g   l l a m a   e l   v a l o r   c o r r e s p o n d i e n t e   c o n   e   c o m o   a r g u m e n t o ,   y   u t i l i z a 
 
 e l   r e s u l t a d o   d e   l a   l l a m a d a   c o m o   s u   r e s u l t a d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t i p o   ( v ) 
 
 D e v u e l v e   e l   t i p o   d e   s u    n i c o   a r g u m e n t o ,   c o d i f i c a d o   c o m o   u n a   c a d e n a .   L o s   p o s i b l e s   r e s u l t a d o s   d e   e s t a   f u n c i  n   s o n   " n u l o s "   ( u n a   c a d e n a ,   n o 
 
 e l   v a l o r   n i l ) ,   " n  m e r o " ,   " c a d e n a " ,   " b o o l e a n " ,   " m e s a " ,   " f u n c i  n " ,   " h i l o " ,   y   " u s e r d a t a " . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 u n p a c k   ( l i s t a   [ ,   i   [ ,   j ] ] ) 
 
 D e v u e l v e   l o s   e l e m e n t o s   d e   l a   t a b l a   d a d a .   E s t a   f u n c i  n   e s   e q u i v a l e n t e   a 
 
           d e v o l v e r   l a   l i s t a   [ i ] ,   l i s t a   [ i   + 1 ] ,          ,   l i s t a   [ j ] 
 
 
 
 e x c e p t o   q u e   e l   c  d i g o   a n t e r i o r   s e   p u e d e   e s c r i b i r   s  l o   p a r a   u n   n  m e r o   f i j o   d e   e l e m e n t o s .   P o r   d e f e c t o ,   i   e s   1   y   j   e s   l a   l o n g i t u d   d e l 
 
 l a   l i s t a ,   t a l   c o m o   s e   d e f i n e   p o r   e l   o p e r a d o r   l o n g i t u d   ( v  a s e      2 . 5 . 5 ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 _ V E R S I O N 
 
 U n a   v a r i a b l e   g l o b a l   ( n o   u n a   f u n c i  n )   q u e   c o n t i e n e   u n a   c a d e n a   q u e   c o n t i e n e   l a   v e r s i  n   i n t  r p r e t e   a c t u a l .   E l   c o n t e n i d o   a c t u a l   d e 
 
 e s t a   v a r i a b l e   e s   " L u a   5 . 1 " . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 x p c a l l   ( f ,   e r r ) 
 
 E s t a   f u n c i  n   e s   s i m i l a r   a   p c a l l ,   e x c e p t o   q u e   u s t e d   p u e d e   e s t a b l e c e r   u n   n u e v o   g e s t o r   d e   e r r o r e s . 
 
 
 
 x p c a l l   l l a m a   a   l a   f u n c i  n   f   e n   m o d o   p r o t e g i d o ,   u s a n d o   e r r   c o m o   e l   c o n t r o l a d o r   d e   e r r o r e s .   C u a l q u i e r   e r r o r   d e n t r o   d e   f   n o   s e   p r o p a g a ,   e n   c a m b i o , 
 
 x p c a l l   d e t e c t a   e l   e r r o r ,   l l a m a   a   l a   f u n c i  n   E r r ,   c o n   e l   o b j e t o   d e   e r r o r   o r i g i n a l ,   y   d e v u e l v e   u n   c  d i g o   d e   e s t a d o .   S u   p r i m e r a 
 
 r e s u l t a d o   e s   e l   c  d i g o   d e   e s t a d o   ( u n   b o o l e a n o ) ,   l o   c u a l   e s   c i e r t o   s i   l a   l l a m a d a   s e   r e a l i z a   c o r r e c t a m e n t e   s i n   e r r o r e s .   E n   e s t e   c a s o ,   t a m b i  n   d e v u e l v e   x p c a l l 
 
 t o d o s   l o s   r e s u l t a d o s   d e   l a   l l a m a d a ,   d e s p u  s   d e   e s t e   p r i m e r   r e s u l t a d o .   E n   c a s o   d e   c u a l q u i e r   e r r o r ,   d e v u e l v e   f a l s e   x p c a l l   m  s   y e r r a n   e l   r e s u l t a d o   d e . 
 
 
 
 5 . 2   -   M a n i p u l a c i  n   C o r o u t i n e 
 
 L a s   o p e r a c i o n e s   r e l a c i o n a d a s   c o n   e l   c o - r u t i n a s   c o m p r e n d e n   u n a   s u b - b i b l i o t e c a   d e   l a   b i b l i o t e c a   b  s i c a   y   v e n   e l   i n t e r i o r   d e   l a   c o - r u t i n a   m e s a . 
 
 V  a s e      2 . 1 1   p a r a   u n a   d e s c r i p c i  n   g e n e r a l   d e   l a   c o - r u t i n a s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . c r e a t e   ( f ) 
 
 C r e a   u n a   n u e v a   c o - r u t i n a ,   c o n   f   c u e r p o .   f   d e b e   s e r   u n a   f u n c i  n   L u a .   D e v u e l v e   l a   n u e v a   c o - r u t i n a ,   u n   o b j e t o   d e   t i p o   " h i l o " . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . r e s u m e   ( c o   [ ,   v a l 1 ,          ] ) 
 
 I n i c i a   o   c o n t i n  a   l a   e j e c u c i  n   d e   l a   c o o p e r a c i  n   c o - r u t i n a .   L a   p r i m e r a   v e z   q u e   r e a n u d a r   u n a   c o - r u t i n a ,   q u e   s e   p o n e   e n   m a r c h a   s u   c u e r p o .   L a 
 
 l o s   v a l o r e s   v a l 1 ,            s e   p a s a n   c o m o   l o s   a r g u m e n t o s   d e   l a   f u n c i  n   d e l   c u e r p o .   S i   l a   c o - r u t i n a   h a   d a d o ,   r e t o m a r   l o   r e i n i c i a ,   l a 
 
 l o s   v a l o r e s   v a l 1 ,            s e   p a s a n   c o m o   l o s   r e s u l t a d o s   d e   l a   p r o d u c c i  n . 
 
 
 
 S i   l a   c o - r u t i n a   s e   e j e c u t a   s i n   n i n g  n   e r r o r ,   r e a n u d a r   d e v u e l v e   t r u e ,   a d e m  s   d e   l o s   v a l o r e s   p a s a d o s     a   c e d e r   ( s i   l o s   r e n d i m i e n t o s   c o - r u t i n a )   o 
 
 c u a l q u i e r   v a l o r   d e v u e l t o   p o r   l a   f u n c i  n   d e l   c u e r p o   ( s i   l a   c o - r u t i n a   t e r m i n a ) .   S i   h a y   a l g  n   e r r o r ,   d e v u e l v e   f a l s e   r e t o m a r   m  s 
 
 e l   m e n s a j e   d e   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . r u n n i n g   ( ) 
 
 D e v u e l v e   l a   c o - r u t i n a   e n   e j e c u c i  n ,   o   n u l o   c u a n d o   s e   l e   l l a m a   p o r   e l   h i l o   p r i n c i p a l . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . s t a t u s   ( c o ) 
 
 D e v u e l v e   e l   e s t a d o   d e   c o   c o - r u t i n a ,   c o m o   u n a   c a d e n a :   " r u n n i n g " ,   s i   l a   c o - r u t i n a   e s t    e n   m a r c h a   ( e s   d e c i r ,   s e   l l a m a   e l   e s t a d o ) ; 
 
 " S u s p e n d i d o " ,   s i   l a   c o - r u t i n a   s e   s u s p e n d e   e n   u n a   l l a m a d a   a   r e n d i r ,   o   s i   n o   h a   c o m e n z a d o   a   e j e c u t a r s e   s i n   e m b a r g o ,   " n o r m a l "   s i   e l 
 
 c o - r u t i n a   e s t    a c t i v a ,   p e r o   n o   s e   e s t    e j e c u t a n d o   ( e s   d e c i r ,   s e   h a   r e a n u d a d o   l a   o t r a   c o - r u t i n a ) ,   y   " m u e r t o "   s i   l a   c o - r u t i n a   h a   t e r m i n a d o 
 
 s u   f u n c i  n   d e l   c u e r p o ,   o   s i   s e   h a   d e t e n i d o   c o n   u n   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . w r a p   ( f ) 
 
 C r e a   u n a   n u e v a   c o - r u t i n a ,   c o n   f   c u e r p o .   f   d e b e   s e r   u n a   f u n c i  n   L u a .   D e v u e l v e   u n a   f u n c i  n   q u e   v u e l v e   a   l a   c o - r u t i n a   c a d a   v e z   q u e 
 
 s e   l l a m a .   T o d o s   l o s   a r g u m e n t o s   p a s a d o s     a   l a   f u n c i  n   s e   c o m p o r t a n   c o m o   l o s   a r g u m e n t o s   a d i c i o n a l e s   p a r a   c o n t i n u a r .   D e v u e l v e   l o s   m i s m o s   v a l o r e s   d e v u e l t o s 
 
 p o r   l a   h o j a   d e   v i d a ,   e x c e p t o   l a   p r i m e r a   b o o l e a n o .   E n   c a s o   d e   e r r o r ,   s e   p r o p a g a   e l   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 c o r o u t i n e . y i e l d   (        ) 
 
 S u s p e n d e   l a   e j e c u c i  n   d e   l a   c o - r u t i n a   d e   l l a m a d a .   E l   c o - r u t i n a   n o   s e   p u e d e   e j e c u t a r   u n a   f u n c i  n   d e   C ,   m e t a m  t o d o ,   o   u n 
 
 i t e r a d o r .   C u a l q u i e r   a r g u m e n t o   q u e   p r o d u c e n   s o n   p a s a d o s     c o m o   r e s u l t a d o s   a d i c i o n a l e s   p a r a   r e a n u d a r . 
 
 
 
 5 . 3   -   M  d u l o s 
 
 L a   b i b l i o t e c a   o f r e c e   e l   p a q u e t e   d e   s e r v i c i o s   b  s i c o s   p a r a   l a   c a r g a   y   l a   c o n s t r u c c i  n   d e   m  d u l o s   e n   L u a .   E x p o r t a   d o s   d e   s u s   f u n c i o n e s 
 
 d i r e c t a m e n t e   e n   e l   m e d i o   a m b i e n t e   m u n d i a l :   r e q u i e r e   y   e l   m  d u l o .   T o d o   l o   d e m  s   s e   e x p o r t a   e n   u n   p a q u e t e   d e   m e s a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m  d u l o   ( n o m b r e   [ ,          ] ) 
 
 C r e a   u n   m  d u l o .   S i   h a y   u n a   m e s a   e n   [ n o m b r e ]   p a c k a g e . l o a d e d ,   e s t a   t a b l a   e s   e l   m  d u l o .   E n   c a s o   c o n t r a r i o ,   s i   h a y   u n   m u n d i a l 
 
 t   d e   m e s a   c o n   e l   n o m b r e   q u e   r e c i b e ,   e s t a   t a b l a   e s   e l   m  d u l o .   D e   l o   c o n t r a r i o   s e   c r e a   u n a   n u e v a   t a b l a   t   y   l o   e s t a b l e c e   c o m o   e l   v a l o r   d e   l a 
 
 n o m b r e   g l o b a l   y   e l   v a l o r   d e   p a c k a g e . l o a d e d   [ n o m b r e ] .   E s t a   f u n c i  n   t a m b i  n   i n i c i a l i z a   t . _ N A M E   c o n   e l   n o m b r e   d a d o ,   c o n   t . _ M 
 
 e l   m  d u l o   ( t   s    m i s m o ) ,   y   t . _ P A C K A G E   c o n   e l   n o m b r e   d e l   p a q u e t e   ( e l   n o m b r e   d e l   m  d u l o   c o m p l e t o   m e n o s   e l    l t i m o   c o m p o n e n t e ,   v  a s e   m  s   a d e l a n t e ) .   P o r    l t i m o , 
 
 m  d u l o   e s t a b l e c e   t   c o m o   e l   n u e v o   e n t o r n o   d e   l a   f u n c i  n   a c t u a l   y   e l   n u e v o   v a l o r   d e   [ n o m b r e ]   p a c k a g e . l o a d e d ,   p o r   l o   q u e   r e q u i e r e n 
 
 d e v u e l v e   t . 
 
 
 
 S i   e l   n o m b r e   e s   u n   n o m b r e   c o m p u e s t o   ( e s   d e c i r ,   u n o   c o n   l o s   c o m p o n e n t e s   s e p a r a d o s   p o r   p u n t o s ) ,   e l   m  d u l o   c r e a   ( o   r e u t i l i z a ,   s i   y a 
 
 E x i s t e n   t a b l a s )   p a r a   c a d a   c o m p o n e n t e .   P o r   e j e m p l o ,   s i   e l   n o m b r e   e s   a b c ,   a   c o n t i n u a c i  n ,   e l   m  d u l o   a l m a c e n a   l a   t a b l a   d e l   m  d u l o   e n   e l   c a m p o   d e   c a m p o   d e   c 
 
 b   d e   u n   m u n d i a l . 
 
 
 
 E s t a   f u n c i  n   p u e d e   r e c i b i r   o p c i o n e s   o p c i o n a l e s   d e s p u  s   d e l   n o m b r e   d e l   m  d u l o ,   d o n d e   c a d a   o p c i  n   e s   u n a   f u n c i  n   q u e   s e   a p l i c a   s o b r e   e l 
 
 m  d u l o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 r e q u i e r e n   ( M o d N a m e ) 
 
 C a r g a   e l   m  d u l o   d a d o .   L a   f u n c i  n   c o m i e n z a   b u s c a n d o   e n   l a   t a b l a   p a c k a g e . l o a d e d   p a r a   d e t e r m i n a r   s i   e s   M o d N a m e 
 
 y a   e s t    c a r g a d o .   S i   e s   a s  ,   e n t o n c e s   r e q u i e r e n   d e v u e l v e   e l   v a l o r   a l m a c e n a d o   e n   p a c k a g e . l o a d e d   [ M o d N a m e ] .   D e   l o   c o n t r a r i o ,   t r a t a   d e   e n c o n t r a r   u n 
 
 c a r g a d o r   p a r a   e l   m  d u l o . 
 
 
 
 P a r a   e n c o n t r a r   u n   c a r g a d o r ,   r e q u i e r e n   s e   g u  a   p o r   l a   m a t r i z   p a c k a g e . l o a d e r s .   A l   c a m b i a r   e s t a   m a t r i z ,   p o d e m o s   c a m b i a r   l a   f o r m a   r e q u i e r e n   m i r a 
 
 p a r a   u n   m  d u l o .   L a   s i g u i e n t e   e x p l i c a c i  n   s e   b a s a   e n   l a   c o n f i g u r a c i  n   p o r   d e f e c t o   p a r a   p a c k a g e . l o a d e r s . 
 
 
 
 E n   p r i m e r   l u g a r   r e q u i e r e n   p a c k a g e . p r e l o a d   c o n s u l t a s   [ M o d N a m e ] .   S i   t i e n e   u n   v a l o r ,   e s t e   v a l o r   ( q u e   d e b e   s e r   u n a   f u n c i  n )   e s   e l   g e s t o r . 
 
 D e   l o   c o n t r a r i o   r e q u i e r e n   b u s c a   u n   c a r g a d o r   L u a   u s a n d o   e l   c a m i n o   a l m a c e n a d o   e n   p a c k a g e . p a t h .   S i   e s o   t a m b i  n   f a l l a ,   b u s c a   u n   C 
 
 c a r g a d o r   d e   u t i l i z a r   l a   r u t a   a l m a c e n a d a   e n   p a c k a g e . c p a t h .   S i   e s o   t a m b i  n   f a l l a ,   s e   i n t e n t a   u n   c a r g a d o r   t o d o - e n - u n o   ( v e r   p a c k a g e . l o a d e r s ) . 
 
 
 
 U n a   v e z   q u e   e l   c a r g a d o r   s e   e n c u e n t r a ,   r e q u i e r e   e l   g e s t o r   d e   l l a m a d a s   c o n   u n    n i c o   a r g u m e n t o ,   M o d N a m e .   S i   e l   g e s t o r   d e v u e l v e   n i n g  n   v a l o r ,   r e q u i e r e n 
 
 a s i g n a   e l   v a l o r   d e v u e l t o   a   p a c k a g e . l o a d e d   [ M o d N a m e ] .   S i   e l   c a r g a d o r   n o   d e v u e l v e   n i n g  n   v a l o r   y   n o   h a   a s i g n a d o   n i n g  n   v a l o r   a 
 
 p a c k a g e . l o a d e d   [ M o d N a m e ] ,   a   c o n t i n u a c i  n ,   r e q u i e r e n   c i e r t o   a s i g n a   a   e s t a   e n t r a d a .   E n   c u a l q u i e r   c a s o ,   r e q u i e r e n   d e v u e l v e   e l   v a l o r   f i n a l   d e 
 
 p a c k a g e . l o a d e d   [ M o d N a m e ] . 
 
 
 
 S i   h a y   a l g  n   e r r o r   a l   c a r g a r   o   e j e c u t a r   e l   m  d u l o ,   o   s i   n o   p u e d e   e n c o n t r a r   c u a l q u i e r   c a r g a d o r   p a r a   e l   m  d u l o ,   a   c o n t i n u a c i  n ,   r e q u i e r e n   s e  a l e s 
 
 u n   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . c p a t h 
 
 L a   r u t a   u t i l i z a d a   p o r   r e q u i e r e n   p a r a   b u s c a r   u n   c a r g a d o r   C . 
 
 
 
 L u a   i n i c i a l i z a   e l   p a c k a g e . c p a t h   r u t a   C   d e   l a   m i s m a   m a n e r a   q u e   i n i c i a l i z a   e l   c a m i n o   p a c k a g e . p a t h   L u a ,   u t i l i z a n d o   e l   m e d i o   a m b i e n t e 
 
 L U A _ C P A T H   v a r i a b l e   o   u n a   r u t a   p o r   d e f e c t o   s e   d e f i n e   e n   e l   l u a c o n f . h . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . l o a d e d 
 
 U n a   t a b l a   u s a d a   p o r   r e q u i r e   p a r a   c o n t r o l a r   l o s   m  d u l o s   q u e   y a   e s t  n   c a r g a d o s .   C u a n d o   s e   r e q u i e r e   u n   m  d u l o   y   M o d N a m e 
 
 p a c k a g e . l o a d e d   [ M o d N a m e ]   n o   e s   f a l s a ,   r e q u i e r e n   s i m p l e m e n t e   d e v u e l v e   e l   v a l o r   a l m a c e n a d o   a l l  . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . l o a d e r s 
 
 U n a   t a b l a   u s a d a   p o r   r e q u i r e   p a r a   c o n t r o l a r   c  m o   c a r g a r   l o s   m  d u l o s . 
 
 
 
 C a d a   e n t r a d a   e n   e s t a   t a b l a   e s   u n a   f u n c i  n   d e   b u s c a d o r .   E n   l a   b  s q u e d a   d e   u n   m  d u l o ,   e s   n e c e s a r i o   l l a m a r   a   c a d a   u n o   d e   e s t o s   i n v e s t i g a d o r e s   e n   e l 
 
 o r d e n   a s c e n d e n t e ,   c o n   e l   n o m b r e   d e l   m  d u l o   ( e l   a r g u m e n t o   d a d o   p a r a   r e q u e r i r )   c o m o   s u    n i c o   p a r  m e t r o .   L a   f u n c i  n   p u e d e   d e v o l v e r 
 
 o t r a   f u n c i  n   ( e l   c a r g a d o r   d e   m  d u l o s )   o   u n a   c a d e n a   d e   e x p l i c a r   p o r   q u    n o   c o n s i d e r    q u e   e l   m  d u l o   ( o   n u l o   s i   n o   t i e n e   n a d a 
 
 d e c i r ) .   L u a   i n i c i a l i z a   e s t a   t a b l a   c o n   c u a t r o   f u n c i o n e s . 
 
 
 
 E l   b u s c a d o r   p r i m e r o   s i m p l e m e n t e   b u s c a   u n a   p a l a   c a r g a d o r a   e n   l a   t a b l a   p a c k a g e . p r e l o a d . 
 
 
 
 E l   b u s c a d o r   s e g u n d o   b u s c a   u n   c a r g a d o r   c o m o   u n a   b i b l i o t e c a   d e   L u a ,   u s a n d o   l a   r u t a   a l m a c e n a d a   e n   p a c k a g e . p a t h .   U n a   r u t a   e s   u n a   s e c u e n c i a   d e 
 
 p l a n t i l l a s   s e p a r a d a s   p o r   p u n t o   y   c o m a .   P a r a   c a d a   p l a n t i l l a ,   e l   b u s c a d o r   c a m b i a r    c a d a   s i g n o   d e   i n t e r r o g a c i  n   e n   l a   p l a n t i l l a 
 
 n o m b r e   d e   a r c h i v o ,   q u e   e s   e l   n o m b r e   d e l   m  d u l o   c o n   c a d a   p u n t o   r e e m p l a z a d o   p o r   u n   " s e p a r a d o r   d e   d i r e c t o r i o "   ( c o m o   " / "   e n   U n i x ) ,   y   l u e g o   l o   h a r  
 
 t r a t a r   d e   a b r i r   e l   n o m b r e   d e l   a r c h i v o   r e s u l t a n t e .   A s  ,   p o r   e j e m p l o ,   s i   l a   r u t a   L u a   e s   l a   c a d e n a 
 
 
 
           " .   /   L u a ; ? . .   /   L c   ; /   u s r   /   l o c a l   /   /   i n i t . l u a ? . ? " 
 
 
 
 l a   b  s q u e d a   d e   u n   a r c h i v o   d e   L u a   p a r a   e l   m  d u l o   f o o   i n t e n t a r    a b r i r   l o s   a r c h i v o s .   /   f o o . l u a , .   /   f o o . l c ,   y   /   u s r   /   l o c a l   /   f o o   /   i n i t . l u a ,   e n 
 
 e s e   o r d e n . 
 
 
 
 E l   b u s c a d o r   d e   t e r c e r a ,   b u s c a   u n   c a r g a d o r   c o m o   u n a   b i b l i o t e c a   d e   C ,   u t i l i z a n d o   l a   r u t a   d a d a   p o r   l a   p a c k a g e . c p a t h   v a r i a b l e .   P o r   e j e m p l o ,   s i 
 
 l a   r u t a   C   e s   l a   c a d e n a 
 
 
 
           " .   /   A s    q u e ,    . .   /   D l l   ; /   u s r   /   l o c a l   /   /   i n i t . s o ? . ? " 
 
 
 
 e l   b u s c a d o r   p a r a   e l   m  d u l o   f o o   i n t e n t a r    a b r i r   l o s   a r c h i v o s .   /   f o o . s o , .   f o o . d l l   /   y   /   u s r   /   l o c a l   /   f o o   /   i n i t . s o ,   e n   e s e   o r d e n .   U n a   v e z 
 
 s e   e n c u e n t r a   u n a   b i b l i o t e c a   d e   C ,   e s t e   p r i m e r   b u s c a d o r   u t i l i z a   u n a   i n s t a l a c i  n   d e   e n l a c e   d i n  m i c o   p a r a   e n l a z a r   l a   a p l i c a c i  n   c o n   l a   b i b l i o t e c a .   L u e g o   s e 
 
 t r a t a   d e   e n c o n t r a r   u n a   f u n c i  n   d e   C   d e n t r o   d e   l a   b i b l i o t e c a   p a r a   s e r   u t i l i z a d o   c o m o   e l   c a r g a d o r .   E l   n o m b r e   d e   e s t a   f u n c i  n   C   e s   l a   c a d e n a 
 
 " L u a o p e n _ "   c o n c a t e n a d o   c o n   u n a   c o p i a   d e l   n o m b r e   d e l   m  d u l o ,   d o n d e   s e   s u s t i t u y e   c a d a   p u n t o   p o r   u n   g u i  n .   P o r   o t r a   p a r t e ,   s i   e l   m  d u l o 
 
 n o m b r e   t i e n e   u n   g u i  n ,   s u   p r e f i j o   h a s t a   ( e   i n c l u y e n d o )   e l   p r i m e r   g u i  n   s e   r e t i r a .   P o r   e j e m p l o ,   s i   e l   n o m b r e   d e l   m  d u l o   e s 
 
 a . v 1 - b . c ,   e l   n o m b r e   d e   l a   f u n c i  n   s e r    l u a o p e n _ b _ c . 
 
 
 
 E l   b u s c a d o r   c u a r t o   t r a t a   d e   u n   c a r g a d o r   d e   t o d o - e n - u n o .   S e   b u s c a   e n   l a   r u t a   C   d e   u n a   b i b l i o t e c a   p a r a   e l   n o m b r e   d e   l a   r a  z   d e l   m  d u l o . 
 
 P o r   e j e m p l o ,   c u a n d o   e x i j a n   a b c ,   s e   b u s c a r    u n a   b i b l i o t e c a   d e   C   p a r a   u n a .   S i   l o   e n c u e n t r a ,   s e   m i r a   e n    l   p a r a   u n a   f u n c i  n   a b i e r t a 
 
 p a r a   e l   s u b m  d u l o ,   e n   n u e s t r o   e j e m p l o ,   e s o   s e r  a   l u a o p e n _ a _ b _ c .   C o n   e s t a   i n s t a l a c i  n ,   u n   p a q u e t e   p u e d e   e m b a l a r   v a r i o s   s u b m  d u l o s   C 
 
 e n   u n a   s o l a   b i b l i o t e c a ,   c o n   c a d a   s u b m  d u l o   m a n t e n i e n d o   s u   f u n c i  n   d e   a p e r t u r a   o r i g i n a l . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . l o a d l i b   ( l i b n a m e ,   f u n c n a m e ) 
 
 V i n c u l a   d i n  m i c a m e n t e   e l   p r o g r a m a   d e   a c o g i d a   c o n   l a   b i b l i o t e c a   d e   C   l i b n a m e .   D e n t r o   d e   e s t a   b i b l i o t e c a ,   b u s c a   u n a   f u n c i  n   y   f u n c n a m e 
 
 d e v u e l v e   e s t a   f u n c i  n   c o m o   u n a   f u n c i  n   d e   C .   ( P o r   l o   t a n t o ,   f u n c n a m e   d e b e   s e g u i r   e l   p r o t o c o l o   ( v e r   l u a _ C F u n c t i o n ) ) . 
 
 
 
 E s t a   e s   u n a   f u n c i  n   d e   b a j o   n i v e l .   S e   e v i t a   p o r   c o m p l e t o   e l   p a q u e t e   y   e l   s i s t e m a   d e   m  d u l o .   A   d i f e r e n c i a   d e   l o   r e q u i e r e n ,   n o   r e a l i z a   n i n g u n a 
 
 c a m i n o   d e   l a   b  s q u e d a   y   n o   s e   a  a d e   d e   f o r m a   a u t o m  t i c a   l a s   e x t e n s i o n e s .   l i b n a m e   d e b e   s e r   e l   n o m b r e   c o m p l e t o   d e l   a r c h i v o   d e   l a   b i b l i o t e c a   d e   C , 
 
 i n c l u y e n d o   s i   e s   n e c e s a r i o   u n   c a m i n o   y   l a   e x t e n s i  n .   f u n c n a m e   d e b e   s e r   e l   n o m b r e   e x a c t o   e x p o r t a d o   p o r   l a   b i b l i o t e c a   d e   C   ( q u e   p u e d e   d e p e n d e r   d e 
 
 e l   c o m p i l a d o r   d e   C   y   e l   e n l a z a d o r   s e   u t i l i z a ) . 
 
 
 
 E s t a   f u n c i  n   n o   e s   c o m p a t i b l e   c o n   A N S I   C .   C o m o   t a l ,   s  l o   e s t    d i s p o n i b l e   e n   a l g u n a s   p l a t a f o r m a s   ( W i n d o w s ,   L i n u x ,   M a c   O S   X , 
 
 S o l a r i s ,   B S D ,   a d e m  s   d e   o t r o s   s i s t e m a s   U n i x   q u e   s o p o r t a n   e l   e s t  n d a r   d l f c n ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . p a t h 
 
 L a   r u t a   d e   a c c e s o   u t i l i z a d a   p o r   r e q u i r e   p a r a   b u s c a r   u n   c a r g a d o r   L u a . 
 
 
 
 E n   e l   a r r a n q u e ,   L u a   i n i c i a l i z a   e s t a   v a r i a b l e   c o n   e l   v a l o r   d e   l a   v a r i a b l e   d e   e n t o r n o   L U A _ P A T H   o   c o n   u n a   t r a y e c t o r i a   p r e d e t e r m i n a d a 
 
 s e   d e f i n e   e n   e l   l u a c o n f . h ,   s i   l a   v a r i a b l e   d e   e n t o r n o   n o   e s t    d e f i n i d o .   C u a l q u i e r   " ; ; "   e n   e l   v a l o r   d e   l a   v a r i a b l e   d e   e n t o r n o   e s 
 
 s u s t i t u i d a   p o r   l a   r u t a   p r e d e t e r m i n a d a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . p r e l o a d 
 
 U n a   t a b l a   p a r a   a l m a c e n a r   l o s   c a r g a d o r e s   p a r a   l o s   m  d u l o s   e s p e c  f i c o s   ( v  a s e   l a   r e q u i e r e n ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 p a c k a g e . s e e a l l   ( m  d u l o ) 
 
 E s t a b l e c e   u n   m e t a t a b l a   p a r a   e l   m  d u l o   c o n   s u   c a m p o   _ _   i n d e x   r e f i r i  n d o s e   a l   m e d i o   a m b i e n t e   m u n d i a l ,   p o r   l o   q u e   e s t e   m  d u l o   h e r e d a   l o s   v a l o r e s 
 
 d e l   m e d i o   a m b i e n t e   m u n d i a l .   P a r a   s e r   u t i l i z a d o   c o m o   u n a   o p c i  n   p a r a   f u n c i o n a r   m  d u l o . 
 
 
 
 5 . 4   -   m a n i p u l a c i  n   d e   c a d e n a s 
 
 E s t a   b i b l i o t e c a   p r o p o r c i o n a   f u n c i o n e s   g e n  r i c a s   p a r a   l a   m a n i p u l a c i  n   d e   c a d e n a s ,   c o m o   l a   b  s q u e d a   y   e x t r a c c i  n   d e   s u b c a d e n a s   y   p a t r o n e s 
 
 c o r r e s p o n d i e n t e .   A l   i n d e x a r   u n a   c a d e n a   e n   L u a ,   e l   p r i m e r   c a r  c t e r   e s t    e n   l a   p o s i c i  n   1   ( n o   e n   e l   0 ,   c o m o   e n   C ) .   L o s    n d i c e s   s e   p e r m i t i  
 
 s e r   n e g a t i v o   y   s e   i n t e r p r e t a n   c o m o   i n d e x a c i  n   h a c i a   a t r  s ,   d e s d e   e l   e x t r e m o   d e   l a   c a d e n a .   A s  ,   e l    l t i m o   c a r  c t e r   e s   e n 
 
 p o s i c i  n   - 1 ,   y   a s    s u c e s i v a m e n t e . 
 
 
 
 L a   b i b l i o t e c a   d e   c u e r d a s   o f r e c e   t o d a s   s u s   f u n c i o n e s   d e n t r o   d e   l a   t a b l a   d e   c a d e n a s .   T a m b i  n   e s t a b l e c e   u n   m e t a t a b l a   p a r a   l a s   c a d e n a s   q u e 
 
 e l   c a m p o   _ _   i n d e x   a p u n t a   a   l a   t a b l a   d e   c a d e n a s .   P o r   l o   t a n t o ,   p u e d e   u t i l i z a r   l a s   f u n c i o n e s   d e   c a d e n a   e n   e s t i l o   o r i e n t a d o   a   o b j e t o s .   P a r a 
 
 e j e m p l o ,   s t r i n g . b y t e   ( s ,   i )   s e   p u e d e   e s c r i b i r   c o m o   s :   b y t e   ( i ) . 
 
 
 
 L a   b i b l i o t e c a   d e   c a d e n a s   s u p o n e   u n   b y t e   c o d i f i c a c i o n e s   d e   c a r a c t e r e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . b y t e   ( s   [ ,   i   [ ,   j ] ] ) 
 
 D e v u e l v e   l o s   c  d i g o s   i n t e r n o s   n u m  r i c o s   d e   l o s   c a r a c t e r e s   s   [ i ] ,   s   [ i   + 1 ] ,          ,   s   [ j ] .   E l   v a l o r   p o r   d e f e c t o   d e   i   e s   1 ,   e l   v a l o r   p o r   d e f e c t o 
 
 v a l o r   d e   j   e s   i . 
 
 T e n g a   e n   c u e n t a   q u e   l o s   c  d i g o s   n u m  r i c o s   n o   s o n   n e c e s a r i a m e n t e   e n   t o d a s   l a s   p l a t a f o r m a s   p o r t  t i l e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . c h a r   (        ) 
 
 R e c i b e   c e r o   o   m  s   n  m e r o s   e n t e r o s .   D e v u e l v e   u n a   c a d e n a   c o n   u n a   l o n g i t u d   i g u a l   a l   n  m e r o   d e   a r g u m e n t o s ,   e n   e l   q u e   c a d a   p e r s o n a j e   t i e n e 
 
 e l   c  d i g o   n u m  r i c o   i n t e r n o   i g u a l   a   s u   a r g u m e n t o   c o r r e s p o n d i e n t e . 
 
 T e n g a   e n   c u e n t a   q u e   l o s   c  d i g o s   n u m  r i c o s   n o   s o n   n e c e s a r i a m e n t e   e n   t o d a s   l a s   p l a t a f o r m a s   p o r t  t i l e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . d u m p   ( f u n c i  n ) 
 
 D e v u e l v e   u n a   c a d e n a   q u e   c o n t i e n e   u n a   r e p r e s e n t a c i  n   b i n a r i a   d e   l a   f u n c i  n   d a d a ,   d e   m o d o   q u e   u n a   L o a d S t r i n g   m  s   a d e l a n t e   e n   e s t a   s e r i e 
 
 d e v u e l v e   u n a   c o p i a   d e   l a   f u n c i  n .   f u n c i  n   d e b e   s e r   u n a   f u n c i  n   L u a ,   s i n   u p v a l u e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . f i n d   ( s ,   e l   p a t r  n   [ ,   [ i n i t ,   s i m p l e ] ] ) 
 
 B u s c a   l a   p r i m e r a   c o i n c i d e n c i a   d e l   p a t r  n   e n   l a   c a d e n a   s .   S i   e n c u e n t r a   u n a   c o i n c i d e n c i a ,   y   l u e g o   e n c o n t r a r   d e v u e l v e   l o s    n d i c e s   d e   s   d o n d e   e s t a 
 
 o c u r r e n c i a   c o m i e n z a   y   t e r m i n a ,   d e   l o   c o n t r a r i o ,   d e v u e l v e   c e r o .   U n   t e r c e r   a r g u m e n t o ,   o p c i o n a l   n u m  r i c a   i n i t   e s p e c i f i c a   p o r   d  n d e   e m p e z a r 
 
 l a   b  s q u e d a ,   y   s u   v a l o r   p r e d e t e r m i n a d o   e s   1   y   p u e d e   s e r   n e g a t i v o .   U n   v a l o r   d e   v e r d a d   c o m o   u n a   l l a n u r a   c u a r t o   a r g u m e n t o   o p c i o n a l   s e   d e s a c t i v a   l a 
 
 i n s t a l a c i o n e s   d e   c o i n c i d e n c i a   d e   p a t r o n e s ,   p o r   l o   q u e   h a c e   l a   f u n c i  n   u n   c l a r o :   " b u s c a r   s u b c a d e n a "   l a   o p e r a c i  n ,   s i n   c a r a c t e r e s   e n   e l   p a t r  n   d e   s e r 
 
 c o n s i d e r a   " m  g i c a " .   T e n g a   e n   c u e n t a   q u e   s i   s e   d a   n o r m a l ,   e n t o n c e s   s e   d e b e   d a r   i n i c i o   a s  . 
 
 S i   e l   p a t r  n   t i e n e   l a s   c a p t u r a s ,   a   c o n t i n u a c i  n ,   e n   u n   p a r t i d o   c o n    x i t o   l o s   v a l o r e s   c a p t u r a d o s   s o n   d e v u e l t o s ,   d e s p u  s   d e   l o s   d o s    n d i c e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 S t r i n g . F o r m a t   ( f o r m a t s t r i n g ,          ) 
 
 D e v u e l v e   u n a   v e r s i  n   c o n   f o r m a t o   d e   s u   n  m e r o   v a r i a b l e   d e   a r g u m e n t o s   a   r a  z   d e   l a   d e s c r i p c i  n   q u e   f i g u r a   e n   s u   p r i m e r   a r g u m e n t o 
 
 ( Q u e   d e b e   s e r   u n a   c a d e n a ) .   L a   c a d e n a   d e   f o r m a t o   s i g u e   l a s   m i s m a s   r e g l a s   q u e   l a   f a m i l i a   p r i n t f   d e   f u n c i o n e s   C   e s t  n d a r .   E l    n i c o 
 
 d i f e r e n c i a s   s o n   q u e   l a s   o p c i o n e s   /   *   m o d i f i c a d o r e s ,   L ,   L ,   N ,   P ,   y   H   n o   s o n   c o m p a t i b l e s   y   q u e   h a y   u n a   o p c i  n   a d i c i o n a l ,   q .   L a 
 
 q   f o r m a t o s   d e   o p c i  n   u n a   c a d e n a   e n   u n a   f o r m a   a d e c u a d a   d e   m a n e r a   s e g u r a   v u e l v e   a   l e e r   p o r   e l   i n t  r p r e t e   d e   L u a :   l a   c a d e n a   s e   e s c r i b e   e n t r e 
 
 c o m i l l a s   d o b l e s ,   y   t o d a s   l a s   c o m i l l a s   d o b l e s ,   l a s   n u e v a s   l  n e a s   c e r o s   i n t e g r a d o s   y   b a r r a s   i n v e r t i d a s   e n   l a   c a d e n a   e s t  n   c o r r e c t a m e n t e   e s c a p    c u a n d o 
 
 e s c r i t o .   P o r   e j e m p l o ,   l a   l l a m a d a 
 
           S t r i n g . F o r m a t   ( " %   q   ' , '   u n a   c a d e n a   c o n "   c o m i l l a s   " y   \   n   n u e v a   l  n e a " ) 
 
 
 
 p r o d u c i r    l a   c a d e n a : 
 
 
 
           " U n a   c a d e n a   c o n   \ "   c o m i l l a s   \   " y   \ 
 
             n u e v a   l  n e a   " 
 
 
 
 L a s   o p c i o n e s   C ,   D ,   E ,   e ,   f ,   g ,   g ,   i ,   o ,   u ,   x ,   x ,   y   t o d o s   e s p e r a m o s   u n   n  m e r o   c o m o   a r g u m e n t o ,   m i e n t r a s   q u e   q   y   s   l e   e s p e r a   u n a   c a d e n a . 
 
 
 
 E s t a   f u n c i  n   n o   a c e p t a   l o s   v a l o r e s   d e   c a d e n a   q u e   c o n t i e n e n   c e r o s   i n c r u s t a d o s ,   e x c e p t o   c o m o   a r g u m e n t o s   a   l a   o p c i  n   q . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . g m a t c h   ( s ,   e l   p a t r  n ) 
 
 D e v u e l v e   u n a   f u n c i  n   d e   i t e r a d o r   q u e ,   c a d a   v e z   q u e   e s   l l a m a d a ,   d e v u e l v e   l a s   c a p t u r a s   d e   l o s   p r  x i m o s   p a t r  n   e n   l a   c a d e n a   s .   S i 
 
 p a t r  n   e s p e c i f i c a   n i n g u n a   c a p t u r a ,   e n t o n c e s   t o d o   e l   p a r t i d o   s e   p r o d u c e   e n   c a d a   l l a m a d a . 
 
 C o m o   u n   e j e m p l o ,   e l   s i g u i e n t e   b u c l e 
 
 
 
           s   =   " h o l a   m u n d o   d e s d e   L u a " 
 
           p a r a   l a   w   e n   s t r i n g . g m a t c h   ( s ,   " %   a   + " )   h a c e n 
 
               p r i n t   ( w ) 
 
           f i n a l 
 
 
 
 s e   r e p e t i r    e n   t o d a s   l a s   p a l a b r a s   d e   l a   c a d e n a   s ,   l a   i m p r e s i  n   d e   u n o   p o r   l  n e a .   E l   s i g u i e n t e   e j e m p l o   r e c o g e   t o d o s   l o s   p r i n c i p a l e s   p a r e s   =   v a l o r   d e   l a 
 
 l a   c a d e n a   d a d a   e n   u n a   t a b l a : 
 
 
 
           t   =   { } 
 
           s   =   " d e l   m u n d o   =   a   =   L u a " 
 
           p a r a   k ,   v   e n   s t r i n g . g m a t c h   ( s ,   " ( %   w   + )   =   ( %   w   + ) " )   h a c e n 
 
               t   [ k ]   =   v 
 
           f i n a l 
 
 
 
 P a r a   e s t a   f u n c i  n ,   u n   ' ^ '   a l   c o m i e n z o   d e   u n   p a t r  n   n o   f u n c i o n a   c o m o   u n   a n c l a ,   y a   q u e   e s t o   i m p e d i r  a   l a   i t e r a c i  n . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . g s u b   ( s ,   p a t r  n ,   R E P L   [ ,   n ] ) 
 
 D e v u e l v e   u n a   c o p i a   d e   s   e n   e l   q u e   t o d a s   l a s   o c u r r e n c i a s   ( o   l o s   p r i m e r o s   n ,   s i   s e   l e   d a )   d e l   p a t r  n   s e   h a n   s u s t i t u i d o   p o r   u n a   s u s t i t u c i  n 
 
 c a d e n a   e s p e c i f i c a d o   p o r   r e p l ,   q u e   p u e d e   s e r   u n a   c a d e n a ,   u n a   t a b l a   o   u n a   f u n c i  n .   g s u b   t a m b i  n   d e v u e l v e ,   c o m o   s u   s e g u n d o   v a l o r ,   e l   t o t a l 
 
 n  m e r o   d e   p a r t i d o s   q u e   s e   h a n   p r o d u c i d o . 
 
 S i   R E P L   e s   u n a   c a d e n a ,   e n t o n c e s   s u   v a l o r   s e   u t i l i z a   p a r a   e l   r e e m p l a z o .   E l   c a r  c t e r %   f u n c i o n a   c o m o   u n   c a r  c t e r   d e   e s c a p e :   e n   c u a l q u i e r   s e c u e n c i a 
 
 R E P L   d e   l a   f o r m a %   n ,   s i e n d o   n   e n t r e   1   y   9 ,   r e p r e s e n t a   e l   v a l o r   d e   l a   s u b c a d e n a   n -  s i m o   c a p t u r a d o   ( v  a s e   m  s   a d e l a n t e ) .   L a   s e c u e n c i a 
 
 %   0 ,   s i g n i f i c a   q u e   t o d o   e l   p a r t i d o .   L a   s e c u e n c i a % % %   r e p r e s e n t a   u n a   s o l a . 
 
 
 
 S i   R E P L   e s   u n a   t a b l a ,   l a   t a b l a   s e   r e a l i z a   u n a   c o n s u l t a   p a r a   c a d a   p a r t i d o ,   u t i l i z a n d o   l a   c a p t u r a   p o r   p r i m e r a   v e z   c o m o   l a   c l a v e ,   s i   e l   p a t r  n   e s p e c i f i c a 
 
 n i n g u n a   c a p t u r a ,   e n t o n c e s   t o d o   e l   p a r t i d o   s e   u t i l i z a   c o m o   l a   t e c l a . 
 
 
 
 S i   R E P L   e s   u n a   f u n c i  n ,   e n t o n c e s   e s t a   f u n c i  n   s e   l l a m a   c a d a   v e z   q u e   s e   p r o d u c e   u n a   c o i n c i d e n c i a ,   c o n   t o d a s   l a s   s u b - c a d e n a s   c a p t u r a d a s   p a s a d o   c o m o 
 
 a r g u m e n t o s ,   e n   o r d e n ,   s i   e l   p a t r  n   n o   e s p e c i f i c a   n i n g u n a   c a p t u r a ,   e n t o n c e s   t o d o   e l   p a r t i d o   s e   p a s a   c o m o    n i c o   a r g u m e n t o . 
 
 
 
 S i   e l   v a l o r   d e v u e l t o   p o r   l a   c o n s u l t a   d e   t a b l a   o   p o r   l a   l l a m a d a   d e   f u n c i  n   e s   u n a   c a d e n a   o   u n   n  m e r o ,   e n t o n c e s   s e   u t i l i z a   c o m o   e l 
 
 c a d e n a   d e   r e e m p l a z o ,   d e   l o   c o n t r a r i o ,   s i   e s   f a l s o   o   n u l o ,   e n t o n c e s   n o   h a y   u n   r e e m p l a z o   ( e s   d e c i r ,   e l   p a r t i d o   o r i g i n a l   s e   c o n s e r v a   e n 
 
 l a   c a d e n a ) . 
 
 
 
 H e   a q u    a l g u n o s   e j e m p l o s : 
 
 
 
           x   =   s t r i n g . g s u b   ( " h o l a   m u n d o " ,   " ( %   w   + ) " ,   " %   1 %   1 " ) 
 
           - >   X   =   " h o l a ,   h o l a ,   m u n d o " 
 
           
 
           x   =   s t r i n g . g s u b   ( " h o l a   m u n d o " ,   " %   w   + " ,   " %   0 %   0 " ,   1 ) 
 
           - >   X   =   " h o l a   h o l a   m u n d o " 
 
           
 
           x   =   s t r i n g . g s u b   ( " h o l a   m u n d o   d e s d e   L u a " ,   " ( %   w   + )   * %   s   ( %   w   + ) " ,   " %   2 %   1 " ) 
 
           - >   X   =   " h o l a   m u n d o   L u a   d e " 
 
           
 
           x   =   s t r i n g . g s u b   ( " h o m e   =   $   H O M E ,   u s e r   =   $   u s e r " ,   " %   $   ( %   w   + ) " ,   o s . g e t e n v ) 
 
           - >   X   =   " h o m e   =   /   h o m e   /   r o b e r t o ,   u s e r   =   R o b e r t o " 
 
           
 
           x   =   s t r i n g . g s u b   ( " 4   + 5   =   $   $   4   + 5   v o l v e r " ,   " %   $   ( - . ) %   $ " ,   l a   f u n c i  n   ( s ) 
 
                       L o a d S t r i n g   r e t o r n o   ( s )   ( ) 
 
                   f i n a l ) 
 
           - >   X   =   " 4   + 5   =   9 " 
 
           
 
           l o c a l ,   t   =   { n a m e   =   " l u a " ,   v e r s i o n   =   " 5 . 1 " } 
 
           x   =   s t r i n g . g s u b   ( " $   n a m e - $   v e r s i o n . t a r . g z " ,   " %   $   ( %   w   + ) " ,   t ) 
 
           - >   X   =   " l u a - 5 . 1 . t a r . g z " 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . l e n   ( s ) 
 
 R e c i b e   u n a   c a d e n a   y   d e v u e l v e   s u   l o n g i t u d .   L a   c a d e n a   v a c  a   " "   t i e n e   u n a   l o n g i t u d   d e   0 .   C e r o s   i n t e g r a d o s   s e   c u e n t a n ,   p o r   l o   q u e   " a   \   0 0 0 b c   \   0 0 0 " 
 
 t i e n e   u n a   l o n g i t u d   d e   5 . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . l o w e r   ( s ) 
 
 R e c i b e   u n a   c a d e n a   y   d e v u e l v e   u n a   c o p i a   d e   e s t a   c a d e n a   c o n   t o d a s   l a s   l e t r a s   m a y  s c u l a s   a   m i n  s c u l a s   c a m b i a d o .   T o d o s   l o s   d e m  s   c a r a c t e r e s 
 
 n o   s e   m o d i f i c a n .   L a   d e f i n i c i  n   d e   l o   q u e   e s   u n a   l e t r a   m a y  s c u l a   d e p e n d e   d e   l a   l o c a l i z a c i  n   a c t u a l . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 S t r i n g . m a t c h   ( s ,   e l   p a t r  n   [ ,   i n i c i o ] ) 
 
 B u s c a   l a   p r i m e r a   c o i n c i d e n c i a   d e l   p a t r  n   e n   l a   c a d e n a   s .   S i   e n c u e n t r a   u n o ,   a   c o n t i n u a c i  n ,   c o i n c i d e   d e v u e l v e   l a s   c a p t u r a s   d e l   p a t r  n ; 
 
 d e   l o   c o n t r a r i o ,   d e v u e l v e   n i l .   S i   e l   p a t r  n   n o   e s p e c i f i c a   n i n g u n a   c a p t u r a ,   e n t o n c e s   t o d o   e l   p a r t i d o   s e   v o l v i  .   U n a   t e r c e r a ,   o p c i o n a l   n u m  r i c a 
 
 a r g u m e n t o   d e   i n i t   e s p e c i f i c a   p o r   d  n d e   e m p e z a r   l a   b  s q u e d a ,   y   s u   v a l o r   p r e d e t e r m i n a d o   e s   1   y   p u e d e   s e r   n e g a t i v o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . r e p   ( s ,   n ) 
 
 D e v u e l v e   u n a   c a d e n a   q u e   e s   l a   c o n c a t e n a c i  n   d e   n   c o p i a s   d e   l a   c a d e n a   s . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . r e v e r s e   ( s ) 
 
 D e v u e l v e   u n a   c a d e n a   q u e   e s   l a   c a d e n a   s   i n v e r t i d a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . s u b   ( s ,   i ,   [ j ] ) 
 
 D e v u e l v e   l a   s u b c a d e n a   d e   s   q u e   c o m i e n z a   e n   i   y   c o n t i n  a   h a s t a   j ,   i   y   j   p u e d e   s e r   n e g a t i v o .   S i   j   e s t    a u s e n t e ,   e n t o n c e s   e s 
 
 s u p o n e   q u e   e s   i g u a l   a   - 1   ( q u e   e s   l a   m i s m a   q u e   l a   l o n g i t u d   d e   l a   c a d e n a ) .   E n   p a r t i c u l a r ,   l a   l l a m a d a   s t r i n g . s u b   ( s ,   1 ,   j )   d e v u e l v e   u n 
 
 p r e f i j o   d e   s   c o n   j   l o n g i t u d ,   y   s t r i n g . s u b   ( s , - i )   d e v u e l v e   u n   s u f i j o   d e   s   c o n   l o n g i t u d   i . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 s t r i n g . u p p e r   ( s ) 
 
 R e c i b e   u n a   c a d e n a   y   d e v u e l v e   u n a   c o p i a   d e   e s t a   c a d e n a   c o n   t o d a s   l a s   l e t r a s   m i n  s c u l a s   a   m a y  s c u l a s   c a m b i a d o .   T o d o s   l o s   d e m  s   c a r a c t e r e s 
 
 n o   s e   m o d i f i c a n .   L a   d e f i n i c i  n   d e   l o   q u e   e s   u n a   l e t r a   m i n  s c u l a   e s   d e p e n d e   d e   l a   l o c a l i z a c i  n   a c t u a l . 
 
 5 . 4 . 1   -   P a t r o n e s 
 
 C a r  c t e r   d e   c l a s e : 
 
 U n a   c l a s e   d e   c a r a c t e r e s   s e   u t i l i z a   p a r a   r e p r e s e n t a r   u n   c o n j u n t o   d e   c a r a c t e r e s .   L a s   s i g u i e n t e s   c o m b i n a c i o n e s   s e   p e r m i t e n   e n   l a   d e s c r i p c i  n   d e   u n a 
 
 c a r  c t e r   d e   c l a s e : 
 
 
 
 x :   ( . ?   d o n d e   x   n o   e s   u n o   d e   l o s   c a r a c t e r e s   m  g i c o s   ^   $   ( ) %   [ ]   *   +   - )   r e p r e s e n t a   e l   c a r  c t e r   x   s    m i s m o . 
 
 . :   ( U n   p u n t o )   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s . 
 
 %   A :   r e p r e s e n t a   t o d a s   l a s   l e t r a s . 
 
 %   C :   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s   d e   c o n t r o l . 
 
 %   D :   r e p r e s e n t a   t o d o s   l o s   d  g i t o s . 
 
 L % :   r e p r e s e n t a   t o d a s   l a s   l e t r a s   m i n  s c u l a s . 
 
 %   P :   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s   d e   p u n t u a c i  n . 
 
 %   S :   r e p r e s e n t a   a   t o d o s   l o s   e s p a c i o s   e n   b l a n c o . 
 
 %   U :   r e p r e s e n t a   t o d a s   l a s   l e t r a s   m a y  s c u l a s . 
 
 %   W :   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s   a l f a n u m  r i c o s . 
 
 %   X :   r e p r e s e n t a   t o d o s   l o s   d  g i t o s   h e x a d e c i m a l e s . 
 
 %   Z :   r e p r e s e n t a   e l   c a r  c t e r   d e   l a   r e p r e s e n t a c i  n   0 . 
 
 X % :   ( d o n d e   X   e s   c u a l q u i e r   c a r  c t e r   n o   a l f a n u m  r i c o )   r e p r e s e n t a   e l   c a r  c t e r   x .   E s t a   e s   l a   f o r m a   e s t  n d a r   p a r a   e s c a p a r   d e   l a   m a g i a 
 
 p e r s o n a j e s .   C u a l q u i e r   c a r  c t e r   p u n t u a c i o n   ( i n c l u s o   l a   m a g i a   n o )   p u e d e   e s t a r   p r e c e d i d o   p o r   u n   ' % '   c u a n d o   s e   u t i l i z a   p a r a   r e p r e s e n t a r s e   a   s    m i s m o   e n   u n 
 
 p a t r  n . 
 
 [ S e t ] :   r e p r e s e n t a   a   l a   c l a s e   q u e   e s   l a   u n i  n   d e   t o d o s   l o s   p e r s o n a j e s   e n   c o n j u n t o .   U n a   s e r i e   d e   c a r a c t e r e s   p u e d e   s e r   e s p e c i f i c a d o   p o r 
 
 s e p a r a c i  n   d e   l o s   c a r a c t e r e s   f i n a l e s   d e   l a   g a m a   c o n   u n   ' - ' .   T o d a s   l a s   c l a s e s   d e   X %   d e s c r i t o s   a n t e r i o r m e n t e   t a m b i  n   s e   p u e d e n   u t i l i z a r   c o m o   c o m p o n e n t e s   e n 
 
 e s t a b l e c i d o .   T o d o s   l o s   d e m  s   c a r a c t e r e s   e n   e l   c o n j u n t o   d e   r e p r e s e n t a r s e   a   s    m i s m o s .   P o r   e j e m p l o ,   [ %   w _ ]   ( o   [ %   _   w ] )   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s   a l f a n u m  r i c o s 
 
 a d e m  s   e l   c a r  c t e r   d e   s u b r a y a d o ,   [ 0 - 7 ]   r e p r e s e n t a   l o s   d  g i t o s   o c t a l e s   y   [ l   0 - 7 % %   - ]   r e p r e s e n t a   l o s   d  g i t o s   o c t a l e s   m  s   l a   m i n  s c u l a 
 
 l e t r a s   m  s   e l   c a r  c t e r   -   " ' . 
 
 L a   i n t e r a c c i  n   e n t r e   l o s   r a n g o s   y   c l a s e s   n o   e s t    d e f i n i d o .   P o r   l o   t a n t o ,   l o s   p a t r o n e s ,   c o m o   [ a z % ]   o   [ a - % % ]   n o   t i e n e n   n i n g  n   s i g n i f i c a d o . 
 
 
 
 [ ^   C o n j u n t o ] :   r e p r e s e n t a   e l   c o m p l e m e n t o   d e   c o n j u n t o ,   d o n d e   c o n j u n t o   s e   i n t e r p r e t a   c o m o   a n t e r i o r m e n t e . 
 
 P a r a   t o d a s   l a s   c a t e g o r  a s   r e p r e s e n t a d a s   p o r   u n a   s o l a   l e t r a   ( %   A , %   c ,   e t c ) ,   l a   l e t r a   m a y  s c u l a   c o r r e s p o n d i e n t e   r e p r e s e n t a   e l   c o m p l e m e n t o 
 
 d e   l a   c l a s e .   P o r   e j e m p l o , %   S   r e p r e s e n t a   t o d o s   l o s   c a r a c t e r e s   n o - e s p a c i o . 
 
 
 
 L a s   d e f i n i c i o n e s   d e   l e t r a ,   e s p a c i o ,   y   o t r o s   g r u p o s   d e   c a r a c t e r e s   d e p e n d e n   d e   l a   l o c a l i z a c i  n   a c t u a l .   E n   p a r t i c u l a r ,   l a   c l a s e   [ a - z ] 
 
 N o   p u e d e   s e r   e q u i v a l e n t e   a l   l % . 
 
 
 
 P a t r  n   d e l   a r t  c u l o : 
 
 U n   e l e m e n t o   d e   p a t r  n   p u e d e   s e r 
 
 
 
 u n a   c l a s e   d e   c a r  c t e r   i n d i v i d u a l ,   q u e   c o i n c i d e   c o n   c u a l q u i e r   c a r  c t e r   i n d i v i d u a l   e n   l a   c l a s e ; 
 
 u n a   c l a s e   d e   c a r  c t e r   s i m p l e   s e g u i d a   p o r   ' * ' ,   q u e   c o i n c i d e   c o n   0   o   m  s   r e p e t i c i o n e s   d e   c a r a c t e r e s   e n   l a   c l a s e .   E s t a s   r e p e t i c i o n e s 
 
 a r t  c u l o s   s i e m p r e   q u e   c o i n c i d a   c o n   l a   s e c u e n c i a   m  s   l a r g a   p o s i b l e ; 
 
 u n a   c l a s e   d e   c a r  c t e r   s i m p l e   s e g u i d a   p o r   ' + ' ,   q u e   c o i n c i d e   c o n   1   o   m  s   r e p e t i c i o n e s   d e   c a r a c t e r e s   e n   l a   c l a s e .   E s t a s   r e p e t i c i o n e s 
 
 a r t  c u l o s   s i e m p r e   q u e   c o i n c i d a   c o n   l a   s e c u e n c i a   m  s   l a r g a   p o s i b l e ; 
 
 u n a   c l a s e   d e   c a r  c t e r   s i m p l e   s e g u i d a   p o r   ' - ' ,   q u e   t a m b i  n   c o i n c i d e   c o n   0   o   m  s   r e p e t i c i o n e s   d e   c a r a c t e r e s   e n   l a   c l a s e .   A   d i f e r e n c i a   d e   ' * ' , 
 
 e s t o s   e l e m e n t o s   d e   r e p e t i c i  n   s i e m p r e   c o i n c i d i r    c o n   l a   s e c u e n c i a   m  s   b r e v e   p o s i b l e ; 
 
 u n a   c l a s e   d e   c a r  c t e r   s i m p l e   s e g u i d a   p o r ,   l o   q u e   c o i n c i d e   c o n   0   o   1   o c u r r e n c i a   d e   u n   p e r s o n a j e   d e   l a   c l a s e   ' ? ' ; 
 
 N % ,   p a r a   n   e n t r e   1   y   9 ;   t a l   a r t  c u l o   c o i n c i d e   c o n   u n a   s u b c a d e n a   i g u a l   a   l a   c a d e n a   d e   n -  s i m o   c a p t u r a d o   ( v  a s e   m  s   a d e l a n t e ) ; 
 
 B x y % ,   d o n d e   x   e   y   s o n   d o s   p e r s o n a j e s   d i s t i n t o s ,   c o m o   e l e m e n t o   c o i n c i d e   c o n   c a d e n a s   q u e   c o m i e n z a n   c o n   x ,   t e r m i n a r   c o n   l a   y ,   y   d o n d e   l a   x 
 
 y   y   e s t  n   e n   e q u i l i b r i o .   E s t o   s i g n i f i c a   q u e ,   s i   u n o   l e e   l a   c a d e n a   d e   i z q u i e r d a   a   d e r e c h a ,   c o n t a n d o   u n o   a   u n o   y   - 1   p a r a   x   a y ,   l a 
 
 t e r m i n a n d o   y   e s   e l   p r i m e r o   y   d o n d e   e l   c o n t e o   l l e g u e   a   0 .   P o r   e j e m p l o ,   e l   e l e m e n t o %   b   ( )   c o i n c i d e   c o n   l a s   e x p r e s i o n e s   e q u i l i b r a d a 
 
 p a r  n t e s i s . 
 
 P a t r  n : 
 
 U n   p a t r  n   e s   u n a   s e c u e n c i a   d e   e l e m e n t o s   d e   p a t r  n .   U n   ' ^ '   a l   p r i n c i p i o   d e   u n   p a t r  n   d e   a n c l a j e   d e l   p a r t i d o   e n   e l   i n i c i o   d e   l a 
 
 c a d e n a   d e   a s u n t o .   A   ' $ '   a l   f i n a l   d e   u n   p a t r  n   d e   a n c l a j e   d e l   p a r t i d o   e n   l a   f i n a l   d e   l a   c a d e n a   d e   a s u n t o .   E n   o t r a s   p o s i c i o n e s ,   ' ^ ' 
 
 y   ' $ '   n o   t i e n e n   u n   s i g n i f i c a d o   e s p e c i a l   y   r e p r e s e n t a r s e   a   s    m i s m o s . 
 
 
 
 C a p t u r a s : 
 
 U n   p a t r  n   p u e d e   c o n t e n e r   s u b - p a t r o n e s   e n t r e   p a r  n t e s i s ,   q u e   d e s c r i b e n   l a s   c a p t u r a s .   C u a n d o   u n   p a r t i d o   t i e n e    x i t o ,   l a s   s u b c a d e n a s 
 
 d e   l a   c a d e n a   d e   a s u n t o   q u e   c a p t u r a   l o s   p a r t i d o s   s e   a l m a c e n a n   ( c a p t u r a d o s )   p a r a   s u   u s o   f u t u r o .   L a s   c a p t u r a s   s e   n u m e r a n   d e   a c u e r d o   a   s u 
 
 p a r  n t e s i s   i z q u i e r d o .   P o r   e j e m p l o ,   e n   e l   p a t r  n   " ( u n   *   ( . ) %   W   ( %   s   * ) ) " ,   l a   p a r t e   d e   l a   c a d e n a   c o i n c i d e n t e   " a   *   ( . ) %   W   ( * %   s ) "   s e   a l m a c e n a 
 
 c o m o   l a   p r i m e r a   c a p t u r a   ( y   p o r   l o   t a n t o   t i e n e   e l   n  m e r o   1 ) ;   e l   c a r  c t e r   c o i n c i d e n t e   " . "   e s   c a p t u r a d o   c o n   e l   n  m e r o   2 ,   y   p a r t e   d e l 
 
 q u e   c o i n c i d e n   c o n   " * %   s "   n o   t i e n e   e l   n  m e r o   3 . 
 
 
 
 C o m o   c a s o   e s p e c i a l ,   l a   c a p t u r a   v a c  a   ( )   c a p t u r a   l a   p o s i c i  n   d e   l a   c a d e n a   a c t u a l   ( u n   n  m e r o ) .   P o r   e j e m p l o ,   s i   s e   a p l i c a   e l 
 
 p a t r  n   " ( )   a a   ( ) "   e n   l a   c a d e n a   " f l a a a p " ,   h a b r    d o s   c a p t u r a s :   3   y   5 . 
 
 
 
 U n   p a t r  n   n o   p u e d e   c o n t e n e r   c e r o s   i n c r u s t a d o s .   U t i l i c e %   z   e n   s u   l u g a r . 
 
 
 
 5 . 5   -   M a n i p u l a c i  n   d e   l a   t a b l a 
 
 E s t a   b i b l i o t e c a   p r o p o r c i o n a   f u n c i o n e s   g e n  r i c a s   p a r a   l a   m a n i p u l a c i  n   d e   l a   t a b l a .   O f r e c e   t o d a s   l a s   f u n c i o n e s   d e n t r o   d e   l a   t a b l a   t a b l a . 
 
 
 
 L a   m a y o r  a   d e   l a s   f u n c i o n e s   d e   l a   b i b l i o t e c a   d e   l a   t a b l a   s u p o n e   q u e   l a   t a b l a   r e p r e s e n t a   u n a   m a t r i z   o   u n a   l i s t a .   P a r a   e s t a s   f u n c i o n e s ,   c u a n d o   h a b l a m o s 
 
 a c e r c a   d e   l a   " l o n g i t u d "   d e   u n a   m e s a   n o s   r e f e r i m o s   a l   r e s u l t a d o   d e l   o p e r a d o r   l o n g i t u d . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t a b l e . c o n c a t   ( t a b l a   [ ,   s e p t i e m b r e ,   [ i   [ ,   j ] ] ] ) 
 
 D a d a   u n a   m a t r i z   e n   d o n d e   t o d o s   l o s   e l e m e n t o s   s o n   c a d e n a s   o   n  m e r o s   d e   t a b l a   d e v u e l v e   [ i ]   . .   s e p   . .   t a b l a   [ i   + 1 ]            s e p t i e m b r e   . .   t a b l a   [ j ] .   E l   v a l o r   p o r   d e f e c t o 
 
 v a l o r   p a r a   s e p t i e m b r e   e s   l a   c a d e n a   v a c  a ,   e l   v a l o r   p o r   d e f e c t o   d e   i   e s   1 ,   y   e l   v a l o r   p o r   d e f e c t o   p a r a   j   e s   l a   l o n g i t u d   d e   l a   t a b l a .   S i   i   e s 
 
 m a y o r   q u e   j ,   d e v u e l v e   l a   c a d e n a   v a c  a . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t a b l e . i n s e r t   ( m e s a ,   [ p o s ] ,   v a l o r ) 
 
 I n s e r t a   e l   v a l o r   e l e m e n t o   e n   l a   p o s i c i  n   p o s   d e   l a   t a b l a ,   d e s p l a z a n d o   a   o t r o s   e l e m e n t o s   p a r a   a b r i r   e l   e s p a c i o ,   s i   e s   n e c e s a r i o .   E l   v a l o r   p o r   d e f e c t o 
 
 p a r a   p o s   e s   n   + 1 ,   d o n d e   n   e s   l a   l o n g i t u d   d e   l a   t a b l a   ( v  a s e      2 . 5 . 5 ) ,   d e   m o d o   q u e   u n a   l l a m a d a   t a b l e . i n s e r t   ( t ,   x )   x   i n s e r t a   e n   e l   e x t r e m o   d e 
 
 t a b l a   t . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t a b l e . m a x n   ( t a b l a ) 
 
 D e v u e l v e   e l   m a y o r    n d i c e   p o s i t i v o   n u m  r i c o   d e   l a   t a b l a   d a d a ,   o   c e r o   s i   l a   t a b l a   n o   t i e n e    n d i c e s   n u m  r i c o s   p o s i t i v o s . 
 
 ( P a r a   h a c e r   s u   t r a b a j o   e s t a   f u n c i  n   h a c e   u n   r e c o r r i d o   l i n e a l   d e   t o d a   l a   t a b l a . ) 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t a b l e . r e m o v e   ( t a b l a   [ ,   p o s ] ) 
 
 E l i m i n a   d e   l a   t a b l a   e l   e l e m e n t o   e n   l a   p o s i c i  n   p o s ,   p a s a n d o   p o r   o t r o s   e l e m e n t o s   p a r a   c e r r a r   e l   e s p a c i o ,   s i   e s   n e c e s a r i o .   D e v u e l v e   e l 
 
 v a l o r   d e l   e l e m e n t o   e l i m i n a d o .   E l   v a l o r   p o r   d e f e c t o   p a r a   p o s   e s   n ,   d o n d e   n   e s   l a   l o n g i t u d   d e   l a   m e s a ,   d e   m o d o   q u e   u n a   l l a m a d a 
 
 t a b l e . r e m o v e   ( t )   e l i m i n a   e l    l t i m o   e l e m e n t o   d e   l a   t a b l a   t . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 t a b l e . s o r t   ( t a b l a   [ ,   c o m p ] ) 
 
 O r d e n a   l o s   e l e m e n t o s   d e   l a   t a b l a   e n   u n   o r d e n   d e t e r m i n a d o ,   e n   e l   l u g a r ,   l o s   d e   l a   t a b l a   [ 1 ]   d e   l a   t a b l a   [ n ] ,   d o n d e   n   e s   l a   l o n g i t u d   d e   l a   t a b l a .   S i   e s   u n   b o r r a d o r 
 
 d a d o ,   e n t o n c e s   d e b e   s e r   u n a   f u n c i  n   q u e   r e c i b e   d o s   e l e m e n t o s   d e   l a   t a b l a ,   y   d e v u e l v e   c i e r t o   c u a n d o   e l   p r i m e r o   e s   m e n o r   q u e   e l   s e g u n d o 
 
 ( P o r   l o   q u e   n o   q u e   u n   b o r r a d o r   ( a   [ i   + 1 ] ,   a   [ i ] )   s e r    v e r d a d e r a   d e s p u  s   d e   l a   c l a s e ) .   S i   u n   b o r r a d o r   n o   s e   d a ,   e n t o n c e s   e l   e s t  n d a r   < L u a   s e   u t i l i z a   e l   o p e r a d o r 
 
 e n   s u   l u g a r . 
 
 E l   a l g o r i t m o   d e   o r d e n a c i  n   n o   e s   e s t a b l e ,   e s   d e c i r ,   e l e m e n t o s   c o n s i d e r a d o s   i g u a l e s   p o r   e l   o r d e n   d a d o   p u e d e n   t e n e r   s u s   p o s i c i o n e s   r e l a t i v a s 
 
 m o d i f i c a d o   p o r   e l   e s t i l o . 
 
 
 
 5 . 6   -   F u n c i o n e s   m a t e m  t i c a s 
 
 E s t a   b i b l i o t e c a   e s   u n a   i n t e r f a z   c o n   l a   b i b l i o t e c a   e s t  n d a r   d e   m a t e m  t i c a s   C .   O f r e c e   t o d a s   l a s   f u n c i o n e s   d e n t r o   d e   l a   t a b l a   d e   m a t e m  t i c a s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . a b s   ( x ) 
 
 D e v u e l v e   e l   v a l o r   a b s o l u t o   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . a c o s   ( x ) 
 
 D e v u e l v e   e l   a r c o   c o s e n o   d e   x   ( e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . a s i n   ( x ) 
 
 D e v u e l v e   e l   a r c o   s e n o   d e   x   ( e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . a t a n   ( x ) 
 
 D e v u e l v e   e l   a r c o   t a n g e n t e   d e   x   ( e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . a t a n 2   ( y ,   x ) 
 
 D e v u e l v e   e l   a r c o   t a n g e n t e   d e   y   /   x   ( e n   r a d i a n e s ) ,   s i n o   q u e   u t i l i z a   l o s   s i g n o s   d e   a m b o s   p a r  m e t r o s   p a r a   e n c o n t r a r   e l   c u a d r a n t e   d e l   r e s u l t a d o . 
 
 ( T a m b i  n   m a n e j a   c o r r e c t a m e n t e   e l   c a s o   d e   x   e s   c e r o . ) 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . c e i l   ( x ) 
 
 D e v u e l v e   e l   m e n o r   e n t e r o   m a y o r   q u e   o   i g u a l   a   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . c o s   ( x ) 
 
 D e v u e l v e   e l   c o s e n o   d e   x   ( q u e   s e   s u p o n e   e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . c o s h   ( x ) 
 
 D e v u e l v e   e l   c o s e n o   h i p e r b  l i c o   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . d e g   ( x ) 
 
 D e v u e l v e   e l    n g u l o   x   ( e n   r a d i a n e s )   e n   g r a d o s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . e x p   ( x ) 
 
 D e v u e l v e   e l   v a l o r   a n t i g u o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . f l o o r   ( x ) 
 
 D e v u e l v e   e l   m a y o r   e n t e r o   m e n o r   q u e   o   i g u a l   a   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . f m o d   ( x ,   y ) 
 
 D e v u e l v e   e l   r e s t o   d e   l a   d i v i s i  n   d e   x   p o r   y   q u e   r e d o n d e a   e l   c o c i e n t e   a   c e r o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . f r e x p   ( x ) 
 
 D e v u e l v e   m   y   e   t a l e s   q u e   x   =   M 2 e ,   e   e s   u n   n  m e r o   e n t e r o   y   e l   v a l o r   a b s o l u t o   d e   m   e s t    e n   e l   i n t e r v a l o   [ 0 , 5 ,   1 )   ( o   c e r o   c u a n d o   x   e s 
 
 c e r o ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . h u g e 
 
 E l   H U G E _ V A L   v a l o r ,   u n   v a l o r   m a y o r   q u e   o   i g u a l   a   c u a l q u i e r   o t r o   v a l o r   n u m  r i c o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . l d e x p   ( m ,   e ) 
 
 D e v o l u c i o n e s   M 2 e   ( e   d e b e   s e r   u n   n  m e r o   e n t e r o ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . l o g   ( x ) 
 
 D e v u e l v e   e l   l o g a r i t m o   n a t u r a l   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . l o g 1 0   ( x ) 
 
 D e v u e l v e   e l   l o g a r i t m o   e n   b a s e   1 0   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . M a x     ( x ,          ) 
 
 D e v u e l v e   e l   v a l o r   m  x i m o   e n t r e   s u s   a r g u m e n t o s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . M i n   ( x ,          ) 
 
 D e v u e l v e   e l   v a l o r   m  n i m o   e n t r e   s u s   a r g u m e n t o s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . m o d f   ( x ) 
 
 D e v u e l v e   d o s   n  m e r o s ,   l a   p a r t e   i n t e g r a l   d e   l a   X   y   l a   p a r t e   f r a c c i o n a r i a   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . p i 
 
 E l   v a l o r   d e   p i . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . p o w   ( x ,   y ) 
 
 D e v u e l v e   x y .   ( T a m b i  n   p u e d e   u t i l i z a r   l a   e x p r e s i  n   x   ^   y   p a r a   c a l c u l a r   e s t e   v a l o r . ) 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . r a d   ( x ) 
 
 D e v u e l v e   e l    n g u l o   x   ( e n   g r a d o s )   e n   r a d i a n e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . r a n d o m   ( [ m   [ ,   n ] ] ) 
 
 E s t a   f u n c i  n   e s   u n a   i n t e r f a z   p a r a   l o s   s i m p l e s   p s e u d o - a l e a t o r i o s   r a n d   g e n e r a d o r   d e   f u n c i  n   p r e v i s t o s   p o r   l a   n o r m a   A N S I   C   ( n o   s e   p u e d e   g a r a n t i z a r 
 
 d a d o   p o r   s u s   p r o p i e d a d e s   e s t a d  s t i c a s . ) 
 
 
 
 C u a n d o   s e   i n v o c a   s i n   a r g u m e n t o s ,   r e t o r n a   u n   u n i f o r m e   p s e u d o - a l e a t o r i o   d e   n  m e r o s   r e a l e s   e n   e l   i n t e r v a l o   [ 0 , 1 ) .   C u a n d o   s e   i n v o c a   c o n   u n   n  m e r o   e n t e r o 
 
 m ,   m a t h . r a n d o m   d e v u e l v e   u n   u n i f o r m e   p s e u d o - a l e a t o r i o   e n t e r o   e n   e l   r a n g o   [ 1 ,   m ] .   C u a n d o   s e   i n v o c a   c o n   d o s   n  m e r o s   e n t e r o s   m 
 
 y   n ,   m a t h . r a n d o m   d e v u e l v e   u n   u n i f o r m e   p s e u d o - a l e a t o r i o   e n t e r o   e n   e l   r a n g o   [ m ,   n ] . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . r a n d o m s e e d   ( x ) 
 
 E s t a b l e c e   x   c o m o   l a   " s e m i l l a "   p a r a   e l   g e n e r a d o r   p s e u d o - a l e a t o r i o :   l a s   s e m i l l a s   d e   l a   i g u a l d a d   d e   p r o d u c i r   s e c u e n c i a s   d e   n  m e r o s   i g u a l e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . s i n   ( x ) 
 
 D e v u e l v e   e l   s e n o   d e   x   ( q u e   s e   s u p o n e   e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . s i n h   ( x ) 
 
 D e v u e l v e   e l   s e n o   h i p e r b  l i c o   d e   x . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . s q r t   ( x ) 
 
 D e v u e l v e   l a   r a  z   c u a d r a d a   d e   x .   ( T a m b i  n   p u e d e   u t i l i z a r   l a   e x p r e s i  n   x   ^   0 . 5   p a r a   c a l c u l a r   e s t e   v a l o r . ) 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 M a t h . t a n   ( x ) 
 
 D e v u e l v e   l a   t a n g e n t e   d e   x   ( q u e   s e   s u p o n e   e n   r a d i a n e s ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 m a t h . t a n h   ( x ) 
 
 D e v u e l v e   l a   t a n g e n t e   h i p e r b  l i c a   d e   x . 
 
 
 
 5 . 7   -   E n t r a d a   y   s a l i d a   d e   I n s t a l a c i o n e s 
 
 L a   b i b l i o t e c a   d e   E   /   S   p r o p o r c i o n a   d o s   e s t i l o s   d i f e r e n t e s   p a r a   l a   m a n i p u l a c i  n   d e   f i c h e r o s .   L a   p r i m e r a   u t i l i z a   d e s c r i p t o r e s   d e   a r c h i v o s   i m p l  c i t o s ,   e s   d e c i r , 
 
 h a y   o p e r a c i o n e s   p a r a   c o n f i g u r a r   u n   a r c h i v o   d e   e n t r a d a   p o r   d e f e c t o   y   u n   a r c h i v o   d e   s a l i d a   p o r   d e f e c t o ,   y   t o d a s   l a s   o p e r a c i o n e s   d e   e n t r a d a   /   s a l i d a   m  s   d e   e s t a s 
 
 a r c h i v o s   p o r   d e f e c t o .   E l   s e g u n d o   e s t i l o   u t i l i z a   d e s c r i p t o r e s   e x p l  c i t o s   d e   a r c h i v o s . 
 
 
 
 C u a n d o   s e   u t i l i z a   d e s c r i p t o r e s   d e   a r c h i v o s   i m p l  c i t a s ,   t o d a s   l a s   o p e r a c i o n e s   s o n   s u m i n i s t r a d o s   p o r   l a   t a b l a   i o .   C u a n d o   s e   u t i l i z a   d e s c r i p t o r e s   e x p l  c i t o s   d e   a r c h i v o ,   e l 
 
 o p e r a c i  n   d e   i o . o p e n   d e v u e l v e   u n   d e s c r i p t o r   d e   a r c h i v o   y   e n t o n c e s   t o d a s   l a s   o p e r a c i o n e s   s e   s u m i n i s t r a n   c o m o   l o s   m  t o d o s   d e   d e s c r i p t o r   d e   a r c h i v o . 
 
 
 
 E l   i o   t a b l a   t a m b i  n   p r o p o r c i o n a   t r e s   d e s c r i p t o r e s   d e   f i c h e r o   p r e d e f i n i d o s   c o n   s u s   s i g n i f i c a d o s   h a b i t u a l e s   d e   C : ,   l o s   i o . s t d i n   i o . s t d o u t   y 
 
 i o . s t d e r r .   L a   b i b l i o t e c a   d e   E   /   S   n u n c a   s e   c i e r r a   e s t o s   a r c h i v o s . 
 
 
 
 A   m e n o s   q u e   s e   i n d i q u e   l o   c o n t r a r i o ,   t o d a s   l a s   f u n c i o n e s   d e   E   /   S   v o l v e r   n u l a   e n   c a s o   d e   f a l l o   ( a d e m  s   d e   u n   m e n s a j e   d e   e r r o r   c o m o   r e s u l t a d o   u n   s e g u n d o   y 
 
 d e p e n d i e n t e   d e l   s i s t e m a   e l   c  d i g o   d e   e r r o r   c o m o   u n   t e r c e r   r e s u l t a d o )   y   u n   v a l o r   d i f e r e n t e   d e   c e r o   e n   c a s o   d e    x i t o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . c l o s e   ( [ a r c h i v o ] ) 
 
 E q u i v a l e n t e   a   p r e s e n t a r :   c l o s e   ( ) .   S i n   u n   a r c h i v o ,   s e   c i e r r a   e l   a r c h i v o   d e   s a l i d a   p o r   d e f e c t o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . f l u s h   ( ) 
 
 E q u i v a l e n t e   a   p r e s e n t a r :   e l i m i n a r   e l   a r c h i v o   d e   s a l i d a   p o r   d e f e c t o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . i n p u t   ( [ a r c h i v o ] ) 
 
 C u a n d o   s e   l l a m a   c o n   u n   n o m b r e   d e   a r c h i v o ,   s e   a b r e   e l   a r c h i v o   c o n   e l   n o m b r e   ( e n   m o d o   d e   t e x t o ) ,   y   e s t a b l e c e   s u   m a n g o   c o m o   e l   a r c h i v o   d e   e n t r a d a   p o r   d e f e c t o .   C u a n d o 
 
 l l a m a d a   c o n   u n   i d e n t i f i c a d o r   d e   a r c h i v o ,   s i n o   q u e   s i m p l e m e n t e   e s t a b l e c e   e s t e   i d e n t i f i c a d o r   d e   a r c h i v o   q u e   e l   a r c h i v o   d e   e n t r a d a   p o r   d e f e c t o .   C u a n d o   s e   i n v o c a   s i n   p a r  m e t r o s , 
 
 d e v u e l v e   e l   a r c h i v o   p o r   d e f e c t o   d e   e n t r a d a   a c t u a l . 
 
 
 
 E n   c a s o   d e   e r r o r e s   e s t a   f u n c i  n   g e n e r a   e l   e r r o r ,   e n   l u g a r   d e   r e g r e s a r   u n   c  d i g o   d e   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . l i n e s   ( [ n o m b r e   d e   a r c h i v o ] ) 
 
 A b r e   e l   n o m b r e   d e   a r c h i v o   d a d o   e n   m o d o   d e   l e c t u r a   y   d e v u e l v e   u n a   f u n c i  n   d e   i t e r a d o r   q u e ,   c a d a   v e z   q u e   e s   l l a m a d a ,   d e v u e l v e   u n a   n u e v a   l  n e a 
 
 a   p a r t i r   d e l   a r c h i v o .   P o r   l o   t a n t o ,   l a   c o n s t r u c c i  n 
 
 
 
           p a r a   l a   l  n e a   d e   i o . l i n e s   ( a r c h i v o )   t e r m i n a n   e l   c u e r p o 
 
 
 
 s e   r e p e t i r    e n   t o d a s   l a s   l  n e a s   d e l   a r c h i v o .   C u a n d o   l a   f u n c i  n   d e   r e p e t i d o r   d e t e c t a   e l   f i n a l   d e l   a r c h i v o ,   d e v u e l v e   c e r o   ( p a r a   t e r m i n a r   e l 
 
 c i c l o )   y   s e   c i e r r a   a u t o m  t i c a m e n t e   e l   a r c h i v o . 
 
 
 
 L a   l l a m a d a   i o . l i n e s   ( )   ( s i n   n o m b r e   d e l   a r c h i v o )   e s   e q u i v a l e n t e   a   i o . i n p u t   ( ) :   L  n e a s   ( ) ,   e s   d e c i r ,   q u e   s e   r e p i t e   e n   l a s   l  n e a s   d e   l a 
 
 p o r   d e f e c t o   d e l   a r c h i v o   d e   e n t r a d a .   E n   e s t e   c a s o   n o   s e   c i e r r a   e l   a r c h i v o   c u a n d o   e l   b u c l e   t e r m i n a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . o p e n   ( f i l e n a m e   [ ,   m o d o ] ) 
 
 E s t a   f u n c i  n   a b r e   u n   a r c h i v o ,   e n   e l   m o d o   e s p e c i f i c a d o   e n   e l   m o d o   d e   c a d e n a .   D e v u e l v e   u n   i d e n t i f i c a d o r   d e   a r c h i v o   n u e v o ,   o ,   e n   c a s o   d e   e r r o r e s , 
 
 n i l   m  s   u n   m e n s a j e   d e   e r r o r . 
 
 
 
 L a   c a d e n a   m o d o   p u e d e   s e r   c u a l q u i e r a   d e   l o s   s i g u i e n t e s : 
 
 
 
 " R " :   m o d o   d e   l e c t u r a   ( p o r   d e f e c t o ) ; 
 
 " W " :   e l   m o d o   d e   e s c r i t u r a ; 
 
 " A " :   e l   m o d o   a p p e n d ; 
 
 " R   + " :   e l   m o d o   d e   a c t u a l i z a c i  n ,   t o d o s   l o s   d a t o s   a n t e r i o r e s   s e   c o n s e r v a ; 
 
 " W   + " :   e l   m o d o   d e   a c t u a l i z a c i  n ,   t o d o s   l o s   d a t o s   a n t e r i o r e s   s e   b o r r a ; 
 
 " A   + " :   a p p e n d   m o d o   d e   a c t u a l i z a c i  n ,   l o s   d a t o s   a n t e r i o r e s   s e   c o n s e r v a ,   l a   e s c r i t u r a   s  l o   s e   p e r m i t e   a l   f i n a l   d e l   a r c h i v o . 
 
 L a   c a d e n a   m o d o   t a m b i  n   p u e d e   t e n e r   u n a   ' b '   a l   f i n a l ,   l o   q u e   s e   n e c e s i t a   e n   a l g u n o s   s i s t e m a s   p a r a   a b r i r   e l   a r c h i v o   e n   m o d o   b i n a r i o .   E s t e 
 
 c a d e n a   e s   e x a c t a m e n t e   l o   q u e   s e   u t i l i z a   e n   l a   f u n c i  n   f o p e n   C   e s t  n d a r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . o u t p u t   ( [ a r c h i v o ] ) 
 
 A l   i g u a l   q u e   i o . i n p u t ,   s i n o   q u e   o p e r a   s o b r e   e l   a r c h i v o   d e   s a l i d a   p o r   d e f e c t o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . p o p e n   ( p r o g   [ ,   m o d o ] ) 
 
 I n i c i a   p r o g r a m a   d e   p r o g   e n   u n   p r o c e s o   s e p a r a d o   y   d e v u e l v e   u n   i d e n t i f i c a d o r   d e   a r c h i v o   q u e   p u e d e   u t i l i z a r   p a r a   l e e r   l o s   d a t o s   d e   e s t e   p r o g r a m a   ( s i 
 
 e l   m o d o   e s   " r " ,   e l   v a l o r   p r e d e t e r m i n a d o )   o   p a r a   e s c r i b i r   d a t o s   e n   e s t e   p r o g r a m a   ( s i   e l   m o d o   e s   " w " ) . 
 
 
 
 E s t a   f u n c i  n   d e p e n d e   d e l   s i s t e m a   y   n o   e s t    d i s p o n i b l e   e n   t o d a s   l a s   p l a t a f o r m a s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . r e a d   (        ) 
 
 E q u i v a l e n t e   a   i o . i n p u t   ( ) :   l e e r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . t m p f i l e   ( ) 
 
 D e v u e l v e   u n   i d e n t i f i c a d o r   d e   u n   a r c h i v o   t e m p o r a l .   E s t e   a r c h i v o   s e   a b r e   e n   m o d o   d e   a c t u a l i z a c i  n   y   q u e   s e   e l i m i n a   a u t o m  t i c a m e n t e   c u a n d o   e l   p r o g r a m a 
 
 e x t r e m o s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . t y p e   ( o b j ) 
 
 C o m p r u e b a   s i   o b j   e s   u n   i d e n t i f i c a d o r   d e   a r c h i v o   v  l i d o .   D e v u e l v e   l a   c a d e n a   " f i l e "   s i   o b j   e s   u n   i d e n t i f i c a d o r   d e   a r c h i v o   a b i e r t o   " ,   c i e r r a   e l   a r c h i v o "   s i   o b j   e s 
 
 u n   i d e n t i f i c a d o r   d e   a r c h i v o   c e r r a d o ,   o   n u l o   s i   o b j   n o   e s   u n   i d e n t i f i c a d o r   d e   a r c h i v o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 i o . w r i t e   (        ) 
 
 E q u i v a l e n t e   a   i o . o u t p u t   ( ) :   e s c r i b i r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   c l o s e   ( ) 
 
 C i e r r a   e l   a r c h i v o .   T e n g a   e n   c u e n t a   q u e   l o s   a r c h i v o s   s e   c i e r r a n   a u t o m  t i c a m e n t e   c u a n d o   s u s   m a n g o s   s o n   b a s u r a   r e c o g i d a ,   s i n o   q u e   t o m a   u n 
 
 c a n t i d a d   i m p r e d e c i b l e   d e   t i e m p o   a   p a s a r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   f l u s h   ( ) 
 
 G u a r d a   t o d o s   l o s   d a t o s   e s c r i t o s   e n   u n   a r c h i v o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 l a s   l  n e a s   d e   l o s   a r c h i v o s :   ( ) 
 
 D e v u e l v e   u n a   f u n c i  n   d e   i t e r a d o r   q u e ,   c a d a   v e z   q u e   e s   l l a m a d a ,   d e v u e l v e   u n a   n u e v a   l  n e a   e n   e l   a r c h i v o .   P o r   l o   t a n t o ,   e l 
 
 c o n s t r u c c i  n 
 
 
 
           p a r a   l a   l  n e a   e n   e l   a r c h i v o :   L  n e a s   ( )   t e r m i n a n   e l   c u e r p o 
 
 
 
 s e   r e p e t i r    e n   t o d a s   l a s   l  n e a s   d e l   a r c h i v o .   ( A   d i f e r e n c i a   d e   i o . l i n e s ,   e s t a   f u n c i  n   n o   s e   c i e r r a   e l   a r c h i v o   c u a n d o   e l   b u c l e   t e r m i n a . ) 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   r e a d   (        ) 
 
 L e e   e l   a r c h i v o   d e   a r c h i v o ,   d e   a c u e r d o   a   l o s   f o r m a t o s   e s t a b l e c i d o s ,   l o s   c u a l e s   e s p e c i f i c a n   l o   q u e   d e b e   l e e r .   P a r a   c a d a   f o r m a t o ,   l a   f u n c i  n   d e v u e l v e   u n 
 
 c a d e n a   ( o   u n   n  m e r o )   c o n   l o s   p e r s o n a j e s   l e e n ,   o   n u l o   s i   n o   p u e d e   l e e r   l o s   d a t o s   c o n   e l   f o r m a t o   e s p e c i f i c a d o .   C u a n d o   s e   i n v o c a   s i n 
 
 f o r m a t o s ,   u t i l i z a   u n   f o r m a t o   p r e d e t e r m i n a d o   q u e   s e   l e e   l a   s i g u i e n t e   l  n e a   e n t e r a   ( v e r   m  s   a b a j o ) . 
 
 
 
 L o s   f o r m a t o s   d i s p o n i b l e s   s o n 
 
 
 
 " *   N " :   l e e   u n   n  m e r o ,   l o   q u e   e s   e l    n i c o   f o r m a t o   q u e   d e v u e l v e   u n   n  m e r o   e n   l u g a r   d e   u n a   c a d e n a . 
 
 " *   A " :   l e e   t o d o   e l   a r c h i v o ,   a   p a r t i r   d e   l a   p o s i c i  n   a c t u a l .   E l   f i n a l   d e l   a r c h i v o ,   d e v u e l v e   l a   c a d e n a   v a c  a . 
 
 " *   L " :   l e e   l a   s i g u i e n t e   l  n e a   ( s e   p i e r d e n   a l   f i n a l   d e   l a   l  n e a ) ,   v o l v i e n d o   n u l a   e n   e l   e x t r e m o   d e l   a r c h i v o .   E s t e   e s   e l   f o r m a t o   p o r   d e f e c t o . 
 
 n  m e r o :   l e e   u n a   c a d e n a   c o n   u n   m  x i m o   d e   e s t e   n  m e r o   d e   c a r a c t e r e s ,   v o l v i e n d o   n u l a   e n   e l   e x t r e m o   d e l   a r c h i v o .   S i   e l   n  m e r o   e s   c e r o ,   s e   l e e 
 
 n a d a   y   d e v u e l v e   u n a   c a d e n a   v a c  a   o   n u l a   e n   e l   f i n a l   d e l   a r c h i v o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   s e e k   ( [ d o n d e ]   [ ,   d e s p l a z a m i e n t o ] ) 
 
 E s t a b l e c e   y   o b t i e n e   l a   p o s i c i  n   d e l   a r c h i v o ,   m e d i d o   d e s d e   e l   p r i n c i p i o   d e l   a r c h i v o ,   a   l a   p o s i c i  n   d a d a   p o r   e l   d e s p l a z a m i e n t o ,   m  s   d e   u n a   b a s e 
 
 e s p e c i f i c a d o   p o r   l a   c a d e n a   d o n d e ,   c o m o   s i g u e : 
 
 
 
 " A j u s t e " :   l a   b a s e   e s   l a   p o s i c i  n   0   ( p r i n c i p i o   d e l   a r c h i v o ) ; 
 
 " A c t " :   l a   b a s e   e s   l a   p o s i c i  n   a c t u a l ; 
 
 " E n d " :   l a   b a s e   e s   e l   f i n a l   d e l   a r c h i v o ; 
 
 E n   c a s o   d e    x i t o ,   l a   f u n c i  n   b u s c a   d e v u e l v e   l a   p o s i c i  n   f i n a l   d e l   a r c h i v o ,   m e d i d a   e n   b y t e s   d e s d e   e l   p r i n c i p i o   d e l   a r c h i v o .   S i 
 
 e s t a   f u n c i  n   f a l l a ,   r e t o r n a   n i l ,   m  s   u n a   c a d e n a   q u e   d e s c r i b e   e l   e r r o r . 
 
 
 
 E l   v a l o r   p r e d e t e r m i n a d o   d e   d o n d e   e s   " a c t " ,   y   p a r a   e l   o f f s e t   e s   0 .   P o r   l o   t a n t o ,   e l   a r c h i v o   l l a m a d o :   s e e k   ( )   d e v u e l v e   e l   a r c h i v o   a c t u a l 
 
 p o s i c i  n ,   s i n   m o d i f i c a r l o ,   e l   a r c h i v o   l l a m a d o :   b u s c a r   ( " s e t " )   e s t a b l e c e   l a   p o s i c i  n   a l   p r i n c i p i o   d e l   a r c h i v o   ( y   d e v u e l v e   0 ) ; 
 
 y   e l   a r c h i v o   d e   l l a m a :   b u s c a r   ( " f i n " )   e s t a b l e c e   l a   p o s i c i  n   h a s t a   e l   f i n a l   d e l   a r c h i v o ,   y   d e v u e l v e   s u   t a m a  o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   s e t v b u f   ( m o d o   [ ,   t a m a  o ] ) 
 
 E s t a b l e c e   e l   m o d o   d e   a l m a c e n a m i e n t o   e n   b  f e r   p a r a   u n   a r c h i v o   d e   s a l i d a .   H a y   t r e s   m o d o s   d i s p o n i b l e s : 
 
 
 
 " N o " :   n o   h a y   a l m a c e n a m i e n t o   t e m p o r a l ,   e l   r e s u l t a d o   d e   c u a l q u i e r   o p e r a c i  n   d e   s a l i d a   a p a r e c e   i n m e d i a t a m e n t e . 
 
 " C o m p l e t o " :   e l   a l m a c e n a m i e n t o   e n   b  f e r   c o m p l e t o ,   l a   o p e r a c i  n   d e   s a l i d a   s  l o   s e   r e a l i z a   c u a n d o   e l   b u f f e r   e s t    l l e n o   ( o   c u a n d o   e x p r e s a m e n t e   e l i m i n a r   e l   a r c h i v o 
 
 ( V  a s e   i o . f l u s h ) ) . 
 
 " L  n e a " :   e l   a l m a c e n a m i e n t o   e n   b  f e r   d e   l  n e a ,   y   l a   s a l i d a   s e   a l m a c e n a n   h a s t a   q u e   u n   s a l t o   d e   l  n e a   o   n o   h a y   n i n g u n a   e n t r a d a   d e   a l g u n o s   a r c h i v o s   e s p e c i a l e s   ( p o r   e j e m p l o , 
 
 u n   d i s p o s i t i v o   d e   t e r m i n a l ) . 
 
 P a r a   l o s   d o s    l t i m o s   c a s o s ,   e l   t a m a  o   e s p e c i f i c a   e l   t a m a  o   d e   l a   m e m o r i a   i n t e r m e d i a ,   e n   b y t e s .   E l   v a l o r   p r e d e t e r m i n a d o   e s   u n   t a m a  o   a d e c u a d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 a r c h i v o :   w r i t e   (        ) 
 
 E s c r i b e   e l   v a l o r   d e   c a d a   u n o   d e   s u s   a r g u m e n t o s   p a r a   e l   a r c h i v o .   L o s   a r g u m e n t o s   d e b e n   s e r   c a d e n a s   o   n  m e r o s .   P a r a   e s c r i b i r   o t r o s   v a l o r e s ,   e l   u s o 
 
 T o S t r i n g   o   S t r i n g . F o r m a t   a n t e s   d e   e s c r i b i r . 
 
 
 
 5 . 8   -   I n s t a l a c i o n e s   d e   f u n c i o n a m i e n t o   d e l   s i s t e m a 
 
 E s t a   b i b l i o t e c a   s e   l l e v a   a   c a b o   a   t r a v  s   d e   l a   t a b l a   d e l   s i s t e m a   o p e r a t i v o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . c l o c k   ( ) 
 
 D e v u e l v e   u n a   a p r o x i m a c i  n   d e   l a   c a n t i d a d   e n   c u e s t i  n   d e   s e g u n d o s   d e   t i e m p o   d e   C P U   u t i l i z a d o   p o r   e l   p r o g r a m a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . d a t e   ( [ f o r m a t o   [ ,   t i e m p o ] ] ) 
 
 D e v u e l v e   u n a   c a d e n a   o   u n a   t a b l a   q u e   c o n t i e n e   l a   f e c h a   y   h o r a ,   c o n   f o r m a t o   s e g  n   e l   f o r m a t o   d e   c a d e n a   e n   c u e s t i  n . 
 
 
 
 S i   e l   a r g u m e n t o   t i e m p o   e s t    p r e s e n t e ,   e s t e   e s   e l   m o m e n t o   d e   s e r   f o r m a t e a d o   ( v  a s e   l a   f u n c i  n   o s . t i m e   p a r a   u n a   d e s c r i p c i  n   d e   e s t e 
 
 v a l o r ) .   D e   l o   c o n t r a r i o ,   l o s   f o r m a t o s   d e   f e c h a   l a   h o r a   a c t u a l . 
 
 
 
 S i   e l   f o r m a t o   c o m i e n z a   c o n   ' ! ' ,   Y   l u e g o   d e   l a   f e c h a   t i e n e   e l   f o r m a t o   d e   h o r a   u n i v e r s a l   c o o r d i n a d a .   D e s p u  s   d e   e s t e   c a r  c t e r   o p c i o n a l ,   s i 
 
 f o r m a t o   e s   l a   c a d e n a   " *   t " ,   e n t o n c e s   l a   f e c h a   d e v u e l v e   u n a   t a b l a   c o n   l o s   s i g u i e n t e s   c a m p o s :   a  o   ( c u a t r o   d  g i t o s ) ,   m e s   ( 1   -   1 2 ) ,   e l   d  a 
 
 ( 1   -   3 1 ) ,   l a   h o r a   ( 0   -   2 3 ) ,   m i n   ( 0   -   5 9 ) ,   s e g u n d o s   ( 0   -   6 1 ) ,   w d a y   ( d  a   d e   l a   s e m a n a ,   e l   d o m i n g o   e s   1 ) ,   y d a y   ( l o s   d  a s   d e l   a  o ) ,   y   i s d s t   ( l u z   d e l   d  a 
 
 b a n d e r a   d e   a h o r r o ,   u n   b o o l e a n o ) . 
 
 
 
 S i   e l   f o r m a t o   n o   e s   " *   t " ,   e n t o n c e s   l a   f e c h a   d e v u e l v e   l a   f e c h a   c o m o   u n a   c a d e n a ,   c o n   f o r m a t o   s e g  n   l a s   m i s m a s   r e g l a s   q u e   l a   f u n c i  n   C 
 
 s t r f t i m e . 
 
 
 
 C u a n d o   s e   i n v o c a   s i n   a r g u m e n t o s ,   l a   f e c h a   d e v u e l v e   u n a   r e p r e s e n t a c i  n   r a z o n a b l e   d e   l a   f e c h a   y   h o r a   e n   q u e   d e p e n d e   d e l   s i s t e m a   d e   a c o g i d a   y 
 
 e n   l a   l o c a l i z a c i  n   a c t u a l   ( e s   d e c i r ,   o s . d a t e   ( )   e s   e q u i v a l e n t e   a   o s . d a t e   ( " %   c " ) ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . d i f f t i m e   ( t 2 ,   t 1 ) 
 
 D e v u e l v e   e l   n  m e r o   d e   s e g u n d o s   d e s d e   e l   i n s t a n t e   t 1   a   t 2   e l   t i e m p o .   E n   P O S I X ,   W i n d o w s   y   o t r o s   s i s t e m a s ,   e s t e   v a l o r   e s   e x a c t a m e n t e 
 
 t 2 - t 1 . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . e x e c u t e   ( [ c o m a n d o ] ) 
 
 E s t a   f u n c i  n   e s   e q u i v a l e n t e   a l   s i s t e m a   d e   f u n c i  n   C .   S e   p a s a   c o m a n d o   a   s e r   e j e c u t a d o   p o r   u n   s h e l l   d e l   s i s t e m a   o p e r a t i v o .   L o 
 
 d e v u e l v e   u n   c  d i g o   d e   e s t a d o ,   q u e   e s   d e p e n d i e n t e   d e l   s i s t e m a .   S i   e l   c o m a n d o   e s t    a u s e n t e ,   e n t o n c e s   s e   d e v u e l v e   n o - c e r o   s i   e l   d e p  s i t o   e s t    d i s p o n i b l e   y 
 
 c e r o   e n   c a s o   c o n t r a r i o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . e x i t   ( [ c o d e ] ) 
 
 L l a m a   a   l a   s a l i d a   d e   l a   f u n c i  n   C ,   c o n   u n   c  d i g o   o p c i o n a l ,   p a r a   t e r m i n a r   e l   p r o g r a m a   d e   a c o g i d a .   E l   v a l o r   p o r   d e f e c t o   p a r a   e l   c  d i g o   e s   e l    x i t o 
 
 c  d i g o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . g e t e n v   ( v a r i a b l e ) 
 
 D e v u e l v e   e l   v a l o r   d e   l a   v a r i a b l e   d e   e n t o r n o   v a r n a m e   p r o c e s o ,   o   n u l o   s i   l a   v a r i a b l e   n o   e s t    d e f i n i d a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . r e m o v e   ( n o m b r e   d e   a r c h i v o ) 
 
 B o r r a   e l   a r c h i v o   o   d i r e c t o r i o   c o n   e l   n o m b r e   d e   p i l a .   D i r e c t o r i o s   d e b e   e s t a r   v a c  o   p a r a   s e r   e l i m i n a d o .   S i   e s t a   f u n c i  n   f a l l a ,   s e 
 
 l a s   n e g a t i v a s ,   a d e m  s   d e   u n a   c a d e n a   q u e   d e s c r i b e   e l   e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . r e n a m e   ( o l d n a m e ,   n e w n a m e ) 
 
 C a m b i a   e l   n o m b r e   d e   a r c h i v o   o   d i r e c t o r i o   c o n   e l   n o m b r e   n o m b r e _ a n t i g u o   a   n e w n a m e .   S i   e s t a   f u n c i  n   f a l l a ,   r e t o r n a   n i l ,   m  s   u n a   c a d e n a   q u e   d e s c r i b e   e l 
 
 e r r o r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . s e t l o c a l e   ( l o c a l ,   [ c a t e g o r  a ] ) 
 
 E s t a b l e c e   l a   c o n f i g u r a c i  n   r e g i o n a l   a c t u a l   d e l   p r o g r a m a .   l o c a l   e s   u n a   c a d e n a   q u e   e s p e c i f i c a   u n   l o c a l ,   l a   c a t e g o r  a   e s   u n a   c a d e n a   o p c i o n a l   q u e   d e s c r i b e 
 
 l a   c a t e g o r  a   p a r a   e l   c a m b i o :   " t o d o s " ,   " O r d e n a r " ,   " C T y p e " ,   " m o n e t a r i a " ,   " n u m  r i c a " ,   o   " t i e m p o " ,   l a   c a t e g o r  a   p o r   d e f e c t o   e s   " t o d o " .   L a 
 
 f u n c i  n   d e v u e l v e   e l   n o m b r e   d e l   n u e v o   l o c a l ,   o   n u l o   s i   l a   p e t i c i  n   n o   p u e d e   s e r   h o n r a d o . 
 
 
 
 S i   l o c a l i z a c i  n   e s   l a   c a d e n a   v a c  a ,   l a   l o c a l i z a c i  n   a c t u a l   s e   e s t a b l e c e   e n   u n   d e f i n i d o   p o r   l a   i m p l a n t a c i  n   l o c a l   d e   o r i g e n .   S i   l a   l o c a l i z a c i  n   e s   l a 
 
 s e r i e   " C " ,   l a   c o n f i g u r a c i  n   r e g i o n a l   a c t u a l   s e   e s t a b l e c e   e n   l a   n o r m a   l o c a l   C . 
 
 
 
 C u a n d o   s e   i n v o c a   c o n   n i l   c o m o   e l   p r i m e r   a r g u m e n t o ,   e s t a   f u n c i  n   s  l o   d e v u e l v e   e l   n o m b r e   d e   l a   l o c a l i z a c i  n   a c t u a l   d e   l a   p r o p u e s t a 
 
 c a t e g o r  a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . t i m e   ( [ t a b l e ] ) 
 
 D e v u e l v e   l a   h o r a   a c t u a l ,   c u a n d o   s e   i n v o c a   s i n   a r g u m e n t o s ,   o   u n   t i e m p o   q u e   r e p r e s e n t a   l a   f e c h a   y   l a   h o r a   i n d i c a d o s   p o r   e l   d a d o 
 
 m e s a .   E s t a   t a b l a   d e b e   t e n e r   l o s   c a m p o s   d e   a  o ,   m e s   y   d  a ,   y   p u e d e n   t e n e r   c a m p o s   h o r a ,   m i n u t o ,   s e g u n d o ,   y   i s d s t   ( p a r a   u n a   d e s c r i p c i  n 
 
 d e   e s t o s   c a m p o s ,   c o n s u l t e   l a   f u n c i  n   o s . d a t e ) . 
 
 
 
 E l   v a l o r   d e v u e l t o   e s   u n   n  m e r o ,   c u y o   s i g n i f i c a d o   d e p e n d e   d e   s u   s i s t e m a .   E n   P O S I X ,   W i n d o w s   y   o t r o s   s i s t e m a s ,   e s t e 
 
 n  m e r o   d e   c u e n t a   e l   n  m e r o   d e   s e g u n d o s   d e s d e   e l   i n i c i o   d e   u n   t i e m p o   d a d o   ( l a   "  p o c a " ) .   E n   o t r o s   s i s t e m a s ,   e l   s i g n i f i c a d o   n o   e s 
 
 e s p e c i f i c a d a ,   y   e l   n  m e r o   d e v u e l t o   p o r   e l   t i e m p o   s  l o   s e   p u e d e   u t i l i z a r   c o m o   u n   a r g u m e n t o   a   l a   f e c h a   y   d i f f t i m e . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 o s . t m p n a m e   ( ) 
 
 D e v u e l v e   u n a   c a d e n a   c o n   u n   n o m b r e   d e   a r c h i v o   q u e   p u e d e   s e r   u s a d o   p a r a   u n   a r c h i v o   t e m p o r a l .   E l   a r c h i v o   d e b e   a b r i r s e   e x p l  c i t a m e n t e   a n t e s   d e   s u   u s o 
 
 y   e x p l  c i t a m e n t e   r e t i r a r s e   c u a n d o   y a   n o   s e a   n e c e s a r i o . 
 
 
 
 E n   a l g u n o s   s i s t e m a s   ( P O S I X ) ,   e s t a   f u n c i  n   t a m b i  n   c r e a   u n   a r c h i v o   c o n   e s e   n o m b r e ,   p a r a   e v i t a r   r i e s g o s   d e   s e g u r i d a d .   ( A l g u i e n   p o d r  a 
 
 c r e a r   e l   a r c h i v o   c o n   p e r m i s o s   i n c o r r e c t o s   e n   e l   t i e m p o   e n t r e   c o n s e g u i r   e l   n o m b r e   y   c r e a r   e l   a r c h i v o . )   U s t e d   t o d a v  a   t i e n e   q u e   a b r i r 
 
 e n   e l   a r c h i v o   p a r a   u s a r   y   p a r a   e l i m i n a r l o   ( i n c l u s o   s i   u s t e d   n o   l o   u s o ) . 
 
 
 
 C u a n d o   s e a   p o s i b l e ,   u s t e d   p u e d e   p r e f e r i r   u t i l i z a r   i o . t m p f i l e ,   q u e   e l i m i n a   a u t o m  t i c a m e n t e   e l   a r c h i v o   c u a n d o   e l   p r o g r a m a   t e r m i n a . 
 
 
 
 5 . 9   -   L a   b i b l i o t e c a   d e   d e p u r a c i  n 
 
 E s t a   b i b l i o t e c a   p r o p o r c i o n a   l a   f u n c i o n a l i d a d   d e   l a   i n t e r f a z   d e   d e p u r a c i  n   d e   l o s   p r o g r a m a s   e n   L u a .   S e   d e b e n   e x t r e m a r   l a s   p r e c a u c i o n e s   a l   u s a r   e s t e 
 
 b i b l i o t e c a .   L a s   f u n c i o n e s   p r o p o r c i o n a d a s   a q u    d e b e n   s e r   u t i l i z a d o s   e x c l u s i v a m e n t e   p a r a   t a r e a s   d e   d e p u r a c i  n   y   s i m i l a r e s ,   t a l e s   c o m o   p e r f i l e s .   P o r   f a v o r , 
 
 r e s i s t i r   l a   t e n t a c i  n   d e   u t i l i z a r l a s   c o m o   u n a   h e r r a m i e n t a   d e   p r o g r a m a c i  n   d e   s i e m p r e :   q u e   p u e d e   s e r   m u y   l e n t o .   P o r   o t r a   p a r t e ,   v a r i a s   d e   e s t a s   f u n c i o n e s 
 
 v i o l a r   a l g u n o s   s u p u e s t o s   a c e r c a   d e   L u a   c  d i g o   ( p o r   e j e m p l o ,   q u e   l a s   v a r i a b l e s   l o c a l e s   a   u n a   f u n c i  n   n o   s e   p u e d e   a c c e d e r   d e s d e   e l   e x t e r i o r   o   q u e 
 
 M e t a T a b l e s   u s e r d a t a   n o   p u e d e   s e r   c a m b i a d o   p o r   L u a   c  d i g o )   y   p o r   l o   t a n t o ,   p u e d e   c o m p r o m e t e r   e l   c  d i g o   d e   o t r o   m o d o   s e g u r o . 
 
 
 
 T o d a s   l a s   f u n c i o n e s   d e   e s t a   b i b l i o t e c a   s e   p r o p o r c i o n a n   d e n t r o   d e   l a   t a b l a   d e   d e p u r a c i  n .   T o d a s   l a s   f u n c i o n e s   q u e   o p e r a n   s o b r e   u n   h i l o   t i e n e   u n a 
 
 p r i m e r   a r g u m e n t o   o p c i o n a l   q u e   e s   e l   h i l o   c o n d u c t o r   p a r a   o p e r a r   s o b r e .   E l   v a l o r   p o r   d e f e c t o   e s   s i e m p r e   e l   h i l o   a c t u a l . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . d e b u g   ( ) 
 
 E n t r a   e n   m o d o   i n t e r a c t i v o   c o n   e l   u s u a r i o ,   e j e c u t a n d o   c a d a   c a d e n a   q u e   e l   u s u a r i o   i n t r o d u c e .   E l   u s o   d e   c o m a n d o s   s i m p l e s   y   d e p u r a c i  n   d e   o t r o s 
 
 i n s t a l a c i o n e s ,   e l   u s u a r i o   p u e d e   i n s p e c c i o n a r   l a s   v a r i a b l e s   l o c a l e s   y   g l o b a l e s ,   c a m b i a r   s u s   v a l o r e s ,   e v a l u a r   e x p r e s i o n e s ,   y   a s    s u c e s i v a m e n t e .   U n a   l  n e a 
 
 q u e   c o n t i e n e   s  l o   l a   p a l a b r a   c o n t   t e r m i n a   e s t a   f u n c i  n ,   d e   m o d o   q u e   l a   p e r s o n a   q u e   l l a m a   c o n t i n  a   s u   e j e c u c i  n . 
 
 
 
 T e n g a   e n   c u e n t a   q u e   l o s   c o m a n d o s   p a r a   d e b u g . d e b u g   n o   e s t  n   l  x i c a m e n t e   a n i d a d o s   d e n t r o   d e   c u a l q u i e r   f u n c i  n ,   y   p o r   l o   t a n t o   n o   t i e n e n   a c c e s o   d i r e c t o   a   l o s   l o c a l e s 
 
 v a r i a b l e s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t f e n v   ( o ) 
 
 D e v u e l v e   e l   e n t o r n o   d e l   o b j e t o   o . 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t h o o k   ( [ h i l o ] ) 
 
 D e v u e l v e   l o s   v a l o r e s   a c t u a l e s   d e   g a n c h o   d e   l a   r o s c a ,   c o m o   t r e s   v a l o r e s :   l a   f u n c i  n   d e   e n l a c e   a c t u a l ,   l a   m  s c a r a   d e   g a n c h o   a c t u a l ,   y   e l 
 
 N  m e r o   d e   g a n c h o   a c t u a l   ( s e g  n   l o   e s t a b l e c i d o   p o r   l a   f u n c i  n   d e b u g . s e t h o o k ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t i n f o   ( [ h i l o ] ,   l a   f u n c i  n   d e   [ l o   q u e ] ) 
 
 D e v u e l v e   u n a   t a b l a   c o n   i n f o r m a c i  n   a c e r c a   d e   u n a   f u n c i  n .   U s t e d   p u e d e   d a r   d i r e c t a m e n t e   a   l a   f u n c i  n ,   o   s e   p u e d e   d a r   u n   n  m e r o   c o m o 
 
 v a l o r   d e   l a   f u n c i  n ,   l o   q u e   s i g n i f i c a   q u e   l a   f u n c i  n   d e   c o r r e r   e n   f u n c i  n   d e l   n i v e l   d e   l a   p i l a   d e   l l a m a d a s   d e l   s u b p r o c e s o   d a d o :   e l   n i v e l   0   e s   e l 
 
 f u n c i  n   a c t u a l   ( g e t i n f o   s    m i s m o ) ,   e l   n i v e l   1   e s   l a   f u n c i  n   q u e   l l a m    g e t i n f o ,   y   a s    s u c e s i v a m e n t e .   S i   l a   f u n c i  n   e s   u n   n  m e r o   m a y o r 
 
 q u e   e l   n  m e r o   d e   f u n c i o n e s   a c t i v a s ,   e n t o n c e s   g e t i n f o   d e v u e l v e   n u l o . 
 
 
 
 L a   t a b l a   d e v u e l t a   p u e d e   c o n t e n e r   t o d o s   l o s   c a m p o s   d e v u e l t o s   p o r   l u a _ g e t i n f o ,   c o n   l o   q u e   l a   c a d e n a   q u e   d e s c r i b e   l o s   c a m p o s   q u e   c u m p l i m e n t a 
 
 i n   E l   v a l o r   p r e d e t e r m i n a d o   p a r a   l o   q u e   e s   c o n s e g u i r   q u e   t o d a   l a   i n f o r m a c i  n   d i s p o n i b l e ,   a   e x c e p c i  n   d e   l a   m e s a   d e   l a s   l  n e a s   v i g e n t e s .   S i   e s t    p r e s e n t e ,   " f "   d e   l a   o p c i  n 
 
 a  a d e   u n   c a m p o   d e n o m i n a d o   f u n c i o n e s   c o n   l a   m i s m a   f u n c i  n .   S i   e s t    p r e s e n t e ,   " L "   d e   l a   o p c i  n ,   s e   a  a d e   u n   c a m p o   d e n o m i n a d o   a c t i v e l i n e s   c o n   l a   t a b l a 
 
 d e   l  n e a s   v  l i d a s . 
 
 
 
 P o r   e j e m p l o ,   e l   d e b u g . g e t i n f o   e x p r e s i  n   ( 1 ,   " n " ) .   N o m b r e   d e v u e l v e   u n a   t a b l a   c o n   u n   n o m b r e   p a r a   l a   f u n c i  n   a c t u a l ,   s i   u n 
 
 n o m b r e   r a z o n a b l e   s e   p u e d e   e n c o n t r a r ,   y   e l   d e b u g . g e t i n f o   e x p r e s i  n   ( d e   i m p r e s i  n )   d e v u e l v e   u n a   t a b l a   c o n   t o d a   l a   i n f o r m a c i  n   d i s p o n i b l e 
 
 l a   f u n c i  n   d e   i m p r e s i  n . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t l o c a l   ( [ h i l o , ]   n i v e l ,   l o c a l ) 
 
 E s t a   f u n c i  n   d e v u e l v e   e l   n o m b r e   y   e l   v a l o r   d e   l a   v a r i a b l e   l o c a l   c o n    n d i c e   l o c a l   d e   l a   f u n c i  n   a   n i v e l   d e   l a   e s c a l a 
 
 p i l a .   ( E l   p r i m e r   p a r  m e t r o   o   v a r i a b l e   l o c a l   t i e n e    n d i c e   1 ,   y   a s    s u c e s i v a m e n t e ,   h a s t a   l a    l t i m a   v a r i a b l e   l o c a l   a c t i v a . )   L a   f u n c i  n 
 
 d e v u e l v e   n i l   s i   n o   h a y   u n a   v a r i a b l e   l o c a l   c o n   e l    n d i c e   d a d o ,   y   g e n e r a   u n   e r r o r   c u a n d o   s e   l l a m a   c o n   u n   n i v e l   f u e r a   d e   r a n g o . 
 
 ( U s t e d   p u e d e   l l a m a r   a   d e b u g . g e t i n f o   p a r a   c o m p r o b a r   s i   e l   n i v e l   e s   v  l i d o . ) 
 
 
 
 L o s   n o m b r e s   d e   v a r i a b l e s   q u e   c o m i e n z a n   c o n   ' ( '   ( p a r  n t e s i s   d e   a p e r t u r a )   r e p r e s e n t a n   v a r i a b l e s   i n t e r n a s   ( v a r i a b l e s   d e   c o n t r o l   d e   l a z o ,   t e m p o r a l e s   y 
 
 C   l o s   l o c a l e s   d e   l a   f u n c i  n ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t m e t a t a b l e   ( o b j e t o ) 
 
 D e v u e l v e   e l   m e t a t a b l a   d e l   o b j e t o   d a d o   o   n u l o   s i   n o   t i e n e   u n   m e t a t a b l a . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t r e g i s t r y   ( ) 
 
 D e v u e l v e   l a   t a b l a   d e   r e g i s t r o   ( v  a s e      3 . 5 ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . g e t u p v a l u e   ( f u n c ,   a r r i b a ) 
 
 E s t a   f u n c i  n   d e v u e l v e   e l   n o m b r e   y   e l   v a l o r   d e   l a   r e v a l u a r   c o n   e l    n d i c e   d e   l a   f u n c i  n   f u n c .   L a   f u n c i  n   d e v u e l v e   n i l 
 
 s i   n o   h a y   r e v a l u a r   c o n   e l    n d i c e   d a d o . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . s e t f e n v   ( o b j e t o ,   t a b l a ) 
 
 E s t a b l e c e   e l   e n t o r n o   d e l   o b j e t o   e s p e c i f i c a d o   e n   l a   t a b l a   d a d a .   O b j e c t . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . s e t h o o k   ( [ h i l o ] ,   e l   g a n c h o ,   l a   m  s c a r a ,   [ c u e n t a ] ) 
 
 E s t a b l e c e   l a   f u n c i  n   d a d a   c o m o   u n   g a n c h o .   L a   m  s c a r a   d e   c a d e n a   y   e l   c o n t e o   d e   n  m e r o   d e   d e s c r i b i r   c u a n d o   e l   g a n c h o   s e   l l a m a .   L a   c a d e n a 
 
 l a   m  s c a r a   p u e d e   t e n e r   l o s   s i g u i e n t e s   c a r a c t e r e s ,   c o n   e l   s i g n i f i c a d o   d a d o : 
 
 
 
 " C " :   e l   g a n c h o   s e   l l a m a   c a d a   v e z   q u e   L u a   l l a m a   a   u n a   f u n c i  n ; 
 
 " R " :   e l   g a n c h o   s e   l l a m a   c a d a   v e z   q u e   r e g r e s a   d e   u n a   f u n c i  n   L u a ; 
 
 " L " :   e l   g a n c h o   s e   l l a m a   c a d a   v e z   q u e   L u a   e n t r a   e n   u n a   n u e v a   l  n e a   d e   c  d i g o . 
 
 C o n   u n a   c u e n t a   d i f e r e n t e   d e   c e r o ,   e l   g a n c h o   s e   l l a m a   d e s p u  s   d e   c a d a   r e c u e n t o   d e   l a s   i n s t r u c c i o n e s . 
 
 
 
 C u a n d o   s e   i n v o c a   s i n   a r g u m e n t o s ,   d e b u g . s e t h o o k   s e   a p a g a   e l   g a n c h o . 
 
 
 
 C u a n d o   e l   g a n c h o   s e   l l a m a ,   e l   p r i m e r   p a r  m e t r o   e s   u n a   c a d e n a   q u e   d e s c r i b e   e l   e v e n t o   q u e   h a   d i s p a r a d o   s u   l l a m a m i e n t o :   " l l a m a d a " ,   " r e t o r n o " 
 
 ( O   " r e t o r n o   d e   l a   c o l a " ,   c u a n d o   s e   s i m u l a   u n   r e t o r n o   d e   u n a   l l a m a d a   d e   l a   c o l a ) ,   " l  n e a " ,   y   " c u e n t a " .   P a r a   l o s   e v e n t o s   d e   l a   l  n e a ,   e l   g a n c h o   t a m b i  n   s e   o b t i e n e   e l 
 
 n  m e r o   d e   l a   l  n e a   n u e v a   c o m o   s e g u n d o   p a r  m e t r o .   D e n t r o   d e   u n   g a n c h o ,   s e   p u e d e   l l a m a r   g e t i n f o   c o n   e l   n i v e l   2   p a r a   o b t e n e r   m  s   i n f o r m a c i  n   s o b r e   e l 
 
 e j e c u t a n d o   l a   f u n c i  n   ( n i v e l   0   e s   l a   f u n c i  n   g e t i n f o ,   y   e l   n i v e l   1   e s   l a   f u n c i  n   d e   e n l a c e ) ,   a   m e n o s   q u e   e l   e v e n t o   e s   " v o l v e r   l a   c o l a " .   E n 
 
 e s t e   c a s o ,   L u a   s  l o   s e   s i m u l a   l a   d e v o l u c i  n ,   y   u n a   l l a m a d a   a   g e t i n f o   d e v o l v e r    l o s   d a t o s   n o   v  l i d o s . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . s e t l o c a l   ( [ h i l o ] ,   e l   n i v e l ,   e l   v a l o r   l o c a l ) 
 
 E s t a   f u n c i  n   a s i g n a   e l   v a l o r   v a l o r   a   l a   v a r i a b l e   l o c a l   c o n    n d i c e   l o c a l   d e   l a   f u n c i  n   a   n i v e l   d e   n i v e l   d e   l a   p i l a . 
 
 L a   f u n c i  n   d e v u e l v e   c e r o   s i   n o   h a y   u n a   v a r i a b l e   l o c a l   c o n   e l    n d i c e   d a d o ,   y   g e n e r a   u n   e r r o r   c u a n d o   s e   l l a m a   c o n   u n   n i v e l 
 
 f u e r a   d e   r a n g o .   ( U s t e d   p u e d e   l l a m a r   a   g e t i n f o   p a r a   c o m p r o b a r   s i   e l   n i v e l   e s   v  l i d o . )   E n   c a s o   c o n t r a r i o ,   d e v u e l v e   e l   n o m b r e   d e l   l o c a l , 
 
 v a r i a b l e . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . s e t m e t a t a b l e   ( o b j e t o ,   t a b l a ) 
 
 E s t a b l e c e   e l   m e t a t a b l a   p a r a   e l   o b j e t o   e s p e c i f i c a d o   e n   e l   c u a d r o   q u e   f i g u r a   ( q u e   p u e d e   s e r   n u l o ) . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . s e t u p v a l u e   ( f u n c ,   a r r i b a ,   v a l o r ) 
 
 E s t a   f u n c i  n   a s i g n a   e l   v a l o r   d e   v a l o r   a   l a   r e v a l u a r   c o n   e l    n d i c e   d e   l a   f u n c i  n   f u n c .   L a   f u n c i  n   r e t o r n a   n i l   s i   h a y 
 
 n o   e s   r e v a l u a r   c o n   e l    n d i c e   d a d o .   D e   l o   c o n t r a r i o ,   d e v u e l v e   e l   n o m b r e   d e   l a   r e v a l u a r . 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
 d e b u g . t r a c e b a c k   ( [ h i l o , ]   [ m e n s a j e   [ ,   n i v e l ] ] ) 
 
 D e v u e l v e   u n a   c a d e n a   c o n   u n   r a s t r e o   d e   l a   p i l a   d e   l l a m a d a s .   U n a   c a d e n a   d e   m e n s a j e   o p c i o n a l   s e   a  a d e   a l   c o m i e n z o   d e   l a 
 
 r a s t r e o .   U n   n  m e r o   d e   n i v e l   o p c i o n a l   l e   d i c e n   e n   q u    n i v e l   p a r a   i n i c i a r   e l   r a s t r e o   ( p o r   d e f e c t o   e s   1 ,   l a   f u n c i  n   d e   l l a m a d a 
 
 r a s t r e o ) . 
 
 
 
 6   -   L u a   a u t  n o m o 
 
 A u n q u e   L u a   h a   s i d o   d i s e  a d o   c o m o   u n   l e n g u a j e   d e   e x t e n s i  n ,   q u e   s e   i n c r u s t a   e n   u n   p r o g r a m a   d e   a c o g i d a   C ,   t a m b i  n   s e   u t i l i z a   c o n   f r e c u e n c i a   c o m o 
 
 u n   l e n g u a j e   i n d e p e n d i e n t e .   E l   i n t  r p r e t e   d e   L u a   c o m o   u n a   l e n g u a   i n d e p e n d i e n t e ,   l l a m a d o   s i m p l e m e n t e   l u a ,   s e   p r o p o r c i o n a   c o n   l a   n o r m a 
 
 d i s t r i b u c i  n .   E l   i n t  r p r e t e   a u t  n o m o   i n c l u y e   t o d a s   l a s   b i b l i o t e c a s   e s t  n d a r ,   i n c l u y e n d o   l a   b i b l i o t e c a   d e   d e p u r a c i  n .   S u   u s o   e s   e l   s i g u i e n t e : 
 
 
 
           l u a   [ o p c i o n e s ]   [ s c r i p t   [ a r g u m e n t o s ] ] 
 
 
 
 L a s   o p c i o n e s   s o n : 
 
 
 
 E - s t a t :   e j e c u t a   c a d e n a   d e   e s t a d  s t i c a ; 
 
 - L   m o d :   " r e q u i e r e "   m o d ; 
 
 - I :   e n t r a   e n   e l   m o d o   i n t e r a c t i v o   d e s p u  s   d e   e j e c u t a r   s e c u e n c i a s   d e   c o m a n d o s ; 
 
 - V :   M u e s t r a   i n f o r m a c i  n   d e   v e r s i  n ; 
 
 - :   D e j a   l a s   o p c i o n e s   d e   m a n e j o ; 
 
 - :   E j e c u t a   s t d i n   c o m o   u n   a r c h i v o   y   d e j a   l a s   o p c i o n e s   d e   m a n e j o . 
 
 D e s p u  s   d e   m a n e j a r   s u s   o p c i o n e s ,   l u a   e j e c u t a   e l   s c r i p t   d a d o ,   p a s  n d o l e   l o s   a r g u m e n t o s   d a d o s   c o m o   a r g u m e n t o s   d e   l a   c a d e n a .   C u a n d o   s e   l l a m a 
 
 s i n   a r g u m e n t o s ,   l u a   s e   c o m p o r t a   c o m o   l u a - v - i   c u a n d o   l a   e n t r a d a   e s t  n d a r   ( s t d i n )   e s   u n   t e r m i n a l ,   y   c o m o   l u a   -   d e   l o   c o n t r a r i o . 
 
 
 
 A n t e s   d e   e j e c u t a r   c u a l q u i e r   a r g u m e n t o ,   e l   i n t  r p r e t e   r e a l i z a   e l   c h e q u e o   d e   L U A _ I N I T   v a r i a b l e   d e   e n t o r n o .   S i   s u   f o r m a t o   e s   @   n o m b r e   d e   a r c h i v o ,   a   c o n t i n u a c i  n , 
 
 l u a   e j e c u t a   e l   a r c h i v o .   D e   l o   c o n t r a r i o ,   l u a   e j e c u t a   l a   p r o p i a   c a d e n a . 
 
 
 
 T o d a s   l a s   o p c i o n e s   s e   m a n e j a n   e n   o r d e n ,   e x c e p t o - i .   P o r   e j e m p l o ,   u n a   i n v o c a c i  n   a l   i g u a l   q u e 
 
 
 
           $   L u a - E ' a   =   1   ' - e '   p r i n t   ( a )   ' s c r i p t . l u a 
 
 
 
 e n   p r i m e r   l u g a r   e s t a b l e c e r   a   1 ,   a   c o n t i n u a c i  n ,   i m p r i m i r   e l   v a l o r   d e   u n a   ( q u e   e s   ' 1   ' )   y ,   f i n a l m e n t e ,   e j e c u t a r   e l   a r c h i v o   s c r i p t . l u a   s i n   a r g u m e n t o s . 
 
 ( A q u    $   e s   e l   i n t  r p r e t e   d e   c o m a n d o s .   S u   s i s t e m a   p u e d e   s e r   d i f e r e n t e . ) 
 
 
 
 A n t e s   d e   c o m e n z a r   a   e j e c u t a r   e l   s c r i p t ,   l u a   r e c o l e c t a   t o d o s   l o s   a r g u m e n t o s   e n   l a   l  n e a   d e   c o m a n d o s   e n   u n a   t a b l a   g l o b a l   l l a m a d a   a r g .   L a   s e c u e n c i a   d e   c o m a n d o s 
 
 n o m b r e   s e   a l m a c e n a   e n   e l    n d i c e   0 ,   e l   p r i m e r   a r g u m e n t o   d e s p u  s   d e   q u e   e l   n o m b r e   d e l   s c r i p t   v a   e n   e l    n d i c e   1 ,   y   a s    s u c e s i v a m e n t e .   C u a l q u i e r   a r g u m e n t o   a n t e s   d e   l a 
 
 n o m b r e   d e l   s c r i p t   ( e s   d e c i r ,   e l   n o m b r e   d e l   i n t  r p r e t e ,   m  s   o p c i o n e s   d e   l a s )   h a s t a   l l e g a r   a    n d i c e s   n e g a t i v o s .   P o r   e j e m p l o ,   e n   l a   l l a m a d a 
 
 
 
           $   L u a - l a   b . l u a   T 1   T 2 
 
 
 
 e l   p r i m e r   i n t  r p r e t e   c o r r e   e l   a . l u a   a r c h i v o ,   a   c o n t i n u a c i  n ,   c r e a   u n a   t a b l a 
 
 
 
           a r g   =   { [ - 2 ]   =   " l u a " ,   [ - 1 ]   =   " - l a " , 
 
                           [ 0 ]   =   " b . l u a " , 
 
                           [ 1 ]   =   " t 1 " ,   [ 2 ]   =   " t 2 " } 
 
 
 
 y ,   f i n a l m e n t e ,   s e   e j e c u t a   l a   b . l u a   a r c h i v o .   E l   s c r i p t   s e   l l a m a   c o n   a r g   [ 1 ] ,   a r g   [ 2 ] ,            c o m o   a r g u m e n t o s ,   s i n o   q u e   t a m b i  n   p u e d e   a c c e d e r   a   e l l o s 
 
 a r g u m e n t o s   c o n   l a   e x p r e s i  n   v a r a r g   ' . . . ' . 
 
 
 
 E n   e l   m o d o   i n t e r a c t i v o ,   s i   u s t e d   e s c r i b e   u n a   d e c l a r a c i  n   i n c o m p l e t a ,   e l   i n t  r p r e t e   e s p e r a   a   q u e   s u   r e a l i z a c i  n   m e d i a n t e   l a   e m i s i  n   d e   o t r o 
 
 p e d i r  . 
 
 
 
 S i   e l   _ P R O M P T   v a r i a b l e   g l o b a l   c o n t i e n e   u n a   c a d e n a ,   e n t o n c e s   s u   v a l o r   s e   u t i l i z a   c o m o   e l   s  m b o l o   d e l   s i s t e m a .   I g u a l m e n t e ,   s i   e l   m u n d i a l 
 
 _ P R O M P T 2   v a r i a b l e   c o n t i e n e   u n a   c a d e n a ,   s u   v a l o r   s e   u t i l i z a   c o m o   e l   s e g u n d o   s i s t e m a   ( e x p e d i d o s   d u r a n t e   l o s   e s t a d o s   i n c o m p l e t o s ) . 
 
 P o r   l o   t a n t o ,   a m b a s   i n d i c a c i o n e s   s e   p u e d e n   c a m b i a r   d i r e c t a m e n t e   e n   l a   l  n e a   d e   c o m a n d o s   o   e n   c u a l q u i e r   p r o g r a m a   d e   L u a   a s i g n a n d o   a   _ P R O M P T .   V  a s e   e l 
 
 s i g u i e n t e   e j e m p l o : 
 
 
 
           $   L u a - e   " _ P R O M P T   =   ' m y p r o m p t > ' " - i 
 
 
 
 ( E l   p a r   e x t e r i o r   d e   l a s   c i t a s   e s   p a r a   e l   d e p  s i t o ,   e l   p a r   i n t e r i o r   e s   p a r a   L u a . )   T e n g a   e n   c u e n t a   e l   u s o   d e   l a - i   p a r a   e n t r a r   e n   m o d o   i n t e r a c t i v o ; 
 
 d e   l o   c o n t r a r i o ,   e l   p r o g r a m a   a c a b a   d e   t e r m i n a r   e n   s i l e n c i o   d e s p u  s   d e   l a   a s i g n a c i  n   a   _ P R O M P T . 
 
 
 
 P a r a   p e r m i t i r   e l   u s o   d e   L u a   c o m o   u n   i n t  r p r e t e   d e   c o m a n d o s   e n   l o s   s i s t e m a s   U n i x ,   e l   i n t  r p r e t e   i n d e p e n d i e n t e   o m i t e   l a   p r i m e r a   l  n e a   d e   u n 
 
 p o r c i  n   s i   s e   e m p i e z a   p o r   e l   n    .   P o r   l o   t a n t o ,   l o s   s c r i p t s   L u a   s e   p u e d e   h a c e r   e n   p r o g r a m a s   e j e c u t a b l e s   u s a n d o   c h m o d   +   x   #   y !   f o r m a , 
 
 c o m o   e n 
 
 
 
           # !   /   U s r   /   l o c a l   /   b i n   /   l u a 
 
 
 
 ( P o r   s u p u e s t o ,   l a   u b i c a c i  n   d e l   i n t  r p r e t e   d e   L u a   p u e d e n   s e r   d i f e r e n t e s   e n   s u   e q u i p o .   S i   l u a   e s t    e n   s u   P A T H ,   e n t o n c e s 
 
 
 
           # !   /   U s r   /   b i n   /   e n v   l u a 
 
 
 
 e s   u n a   s o l u c i  n   m  s   p o r t  t i l . ) 
 
 
 
 7   -   I n c o m p a t i b i l i d a d e s   c o n   l a   v e r s i  n   a n t e r i o r 
 
 A q u    t e n e m o s   u n a   l i s t a   d e   l a s   i n c o m p a t i b i l i d a d e s   q u e   p u e d e   e n c o n t r a r   c u a n d o   s e   m u e v e   u n   p r o g r a m a   d e   L u a   L u a   5 . 0   a   5 . 1 .   U s t e d   p u e d e   e v i t a r   l a   m a y o r  a   d e 
 
 l a s   i n c o m p a t i b i l i d a d e s   c o m p i l a r   L u a   c o n   l a s   o p c i o n e s   a d e c u a d a s   ( v e r   l u a c o n f . h   a r c h i v o ) .   S i n   e m b a r g o ,   t o d a s   e s t a s   o p c i o n e s   d e   c o m p a t i b i l i d a d 
 
 s e   e l i m i n a r    e n   l a   p r  x i m a   v e r s i  n   d e   L u a . 
 
 
 
 7 . 1   -   L o s   c a m b i o s   e n   e l   l e n g u a j e 
 
 E l   s i s t e m a   v a r a r g   c a m b i a d o   d e s d e   e l   a r g u m e n t o   p s e u d o - a r g u m e n t o   c o n   u n a   t a b l a   c o n   l o s   a r g u m e n t o s   a d i c i o n a l e s   a   l a   e x p r e s i  n   v a r a r g . 
 
 ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   o p c i  n   L U A _ C O M P A T _ V A R A R G   e n   l u a c o n f . h . ) 
 
 H u b o   u n   c a m b i o   s u t i l   e n   e l    m b i t o   d e   l a s   v a r i a b l e s   i m p l  c i t a s   d e   l a   d e   d e c l a r a c i  n   y   l a   d e c l a r a c i  n   d e   r e p e t i c i  n . 
 
 L a   c a d e n a   l a r g a   /   s i n t a x i s   d e   c o m e n t a r i o   l a r g o   ( [ [ c a d e n a ] ] )   n o   p e r m i t e   l a   a n i d a c i  n .   P u e d e   u t i l i z a r   l a   n u e v a   s i n t a x i s   ( [ =   [ c a d e n a ]   = ] )   e n   e s t o s 
 
 c a s o s .   ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   L U A _ C O M P A T _ L S T R   o p c i  n   e n   l u a c o n f . h . ) 
 
 7 . 2   -   L o s   c a m b i o s   e n   l a s   B i b l i o t e c a s 
 
 F u n c i  n   s t r i n g . g f i n d   p a s    a   l l a m a r s e   s t r i n g . g m a t c h .   ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   o p c i  n   L U A _ C O M P A T _ G F I N D   e n   l u a c o n f . h . ) 
 
 C u a n d o   s t r i n g . g s u b   s e   l l a m a   a   u n a   f u n c i  n   c o m o   s u   t e r c e r   a r g u m e n t o ,   s i e m p r e   q u e   e s t a   f u n c i  n   d e v u e l v e   c e r o   o   l o   f a l s o 
 
 c a d e n a   d e   r e e m p l a z o   e s   t o d o   e l   p a r t i d o ,   e n   l u g a r   d e   l a   c a d e n a   v a c  a . 
 
 T a b l e . s e t n   f u n c i  n   e s t    d e s f a s a d a .   F u n c i  n   t a b l e . g e t n   c o r r e s p o n d e   a   l a   n u e v a   l o n g i t u d   d e l   o p e r a d o r   ( # ) ,   u t i l i c e   e l   o p e r a d o r 
 
 e n   l u g a r   d e   l a   f u n c i  n .   ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   L U A _ C O M P A T _ G E T N   o p c i  n   e n   l u a c o n f . h . ) 
 
 F u n c i  n   L O A D L I B   p a s    a   l l a m a r s e   p a c k a g e . l o a d l i b .   ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   L U A _ C O M P A T _ L O A D L I B   o p c i  n   e n   l u a c o n f . h . ) 
 
 M a t h . m o d   f u n c i  n   p a s    a   l l a m a r s e   m a t h . f m o d .   ( V e r   e n   t i e m p o   d e   c o m p i l a c i  n   o p c i  n   L U A _ C O M P A T _ M O D   e n   l u a c o n f . h . ) 
 
 F u n c i o n e s   t a b l e . f o r e a c h   y   t a b l e . f o r e a c h i   e s t  n   e n   d e s u s o .   P u e d e   u t i l i z a r   u n   b u c l e   c o n   p a r e j a s   o   i p a i r s   l u g a r . 
 
 S e   o b s e r v a r o n   c a m b i o s   s u s t a n c i a l e s   e n   l a   f u n c i  n   r e q u i e r e   d e b i d o   a l   s i s t e m a   n u e v o   m  d u l o .   S i n   e m b a r g o ,   e l   n u e v o   c o m p o r t a m i e n t o   s e   d e b e   p r i n c i p a l m e n t e 
 
 c o m p a t i b l e   c o n   e l   a n t e r i o r ,   p e r o   s e   r e q u i e r e   l a   r u t a   d e   p a c k a g e . p a t h   e n   l u g a r   d e   d e s d e   L U A _ P A T H . 
 
 C o l l e c t g a r b a g e   f u n c i  n   t i e n e   a r g u m e n t o s   d i f e r e n t e s .   G c i n f o   f u n c i  n   e s   o b s o l e t a ;   c o l l e c t g a r b a g e   u s o   ( " c u e n t a " )   e n   s u   l u g a r . 
 
 7 . 3   -   L o s   c a m b i o s   e n   l a   A P I 
 
 L a s   f u n c i o n e s   *   l u a o p e n _   ( a   l a s   b i b l i o t e c a s   a b i e r t a s )   n o   s e   p u e d e   l l a m a r   d i r e c t a m e n t e ,   c o m o   u n a   f u n c i  n   d e   C   n o r m a l .   S e   d e b e   s e r   l l a m a d o 
 
 a   t r a v  s   d e   L u a ,   c o m o   u n a   f u n c i  n   L u a . 
 
 F u n c i  n   l u a _ o p e n   f u e   s u s t i t u i d o   p o r   l u a _ n e w s t a t e   p a r a   p e r m i t i r   a l   u s u a r i o   e s t a b l e c e r   u n a   f u n c i  n   d e   a s i g n a c i  n   d e   m e m o r i a .   U s t e d   p u e d e   u s a r 
 
 l u a L _ n e w s t a t e   d e   l a   b i b l i o t e c a   e s t  n d a r   p a r a   c r e a r   u n   e s t a d o   c o n   u n a   f u n c i  n   d e   a s i g n a c i  n   e s t  n d a r   ( b a s a d a   e n   u n a   r e a s i g n a c i  n ) . 
 
 F u n c i o n e s   l u a L _ g e t n   y   l u a L _ s e t n   ( d e   l a   b i b l i o t e c a   a u x i l i a r )   e s t  n   e n   d e s u s o .   U t i l i z a r   l u a _ o b j l e n   e n   l u g a r   d e   l u a L _ g e t n   y 
 
 n a d a   e n   l u g a r   d e   l u a L _ s e t n . 
 
 F u n c i  n   l u a L _ o p e n l i b   f u e   s u s t i t u i d o   p o r   l u a L _ r e g i s t e r . 
 
 F u n c i  n   l u a L _ c h e c k u d a t a   a h o r a   t i r a   u n   e r r o r   c u a n d o   e l   v a l o r   d a d o   n o   e s   u n   u s e r d a t a   d e l   t i p o   e s p e r a d o .   ( E n   L u a   e s   5 , 0 
 
 d e v u e l v e   N U L L . ) 
 
 8   -   L a   s i n t a x i s   c o m p l e t a   d e   L u a 
 
  s t a   e s   l a   s i n t a x i s   c o m p l e t a   d e   L u a   e n   B N F   e x t e n d i d a .   ( N o   d e s c r i b e   l a s   p r e c e d e n c i a s   d e   l o s   o p e r a d o r e s . ) 
 
 
 
 
 
 t r o z o   : :   =   { S T A T   [ ` ;   ' ] }   [ l a s t s t a t   [ ` ; ' ] ] 
 
 
 
 b l o q u e   : :   =   t r o z o 
 
 
 
 e s t a d  s t i c a s   : :   =   v a r l i s t   ` =   ' e x p l i s t   | 
 
 F u n c t i o n C a l l   | 
 
 t e r m i n a n   b l o q u e   | 
 
 m i e n t r a s   q u e   e x p   t e r m i n a n   b l o q u e   | 
 
 r e p e t i r   h a s t a   e l   b l o q u e   d e   e x p   | 
 
 e x p ,   s i   e n t o n c e s   e l   b l o q u e   { e l s e i f   e x p   e n t o n c e s   e l   b l o q u e }   [ b l o q u e   e l s e ]   f i n a l   | 
 
 N o m b r e   d e   ` =   ' e x p ' ,   ' e x p   [ ` , '   e x p ]   t e r m i n a n   b l o q u e   | 
 
 p a r a   l a   l i s t a   d e   n o m b r e s   d e   e x p l i s t   t e r m i n a n   b l o q u e   | 
 
 f u n c i  n   d e   f u n c n a m e   f u n c b o d y   | 
 
 f u n c b o d y   l o c a l   d e   n o m b r e   d e   l a   f u n c i  n   | 
 
 l i s t a   d e   n o m b r e s   l o c a l   [ ' = '   e x p l i s t ] 
 
 
 
 l a s t s t a t   : :   =   r e t o r n o   [ e x p l i s t ]   |   p a u s a 
 
 
 
 f u n c n a m e   : :   N o m b r e   =   ` { ' N o m b r e   [ ` . } : '   N o m b r e ] 
 
 
 
 v a r l i s t   : :   =   { v a r   ' , '   v a r } 
 
 
 
 v a r   =   : :   N o m b r e   |   p r e f i x e x p   ` [ ' e x p ` ] '   | .   p r e f i x e x p   ` ' N o m b r e 
 
 
 
 l i s t a   d e   n o m b r e s   : :   N o m b r e   =   { ' , '   N o m b r e } 
 
 
 
 e x p l i s t   : :   =   { e x p   ` ,   ' }   e x p 
 
 
 
 e x p   : :   =   n i l   |   f a l s e   |   t r u e   |   N  m e r o   |   C a d e n a   |   ` . . .   ' |   F u n c i  n   | 
 
 p r e f i x e x p   |   t a b l e c o n s t r u c t o r   |   e x p   e x p   b i n o p   |   U N O P   e x p 
 
 
 
 p r e f i x e x p   : :   =   v a r   |   F u n c t i o n C a l l   |   ` ( ' e x p ' )   ' 
 
 
 
 F u n c t i o n C a l l   : :   =   p r e f i x e x p   a r g s   |   p r e f i x e x p   ` :   ' a r g s   N o m b r e 
 
 
 
 a r g u m e n t o s   : :   =   ' ( '   [ e x p l i s t ]   ` )   ' |   t a b l e c o n s t r u c t o r   |   C a d e n a 
 
 
 
 l a   f u n c i  n   : :   =   f u n c t i o n   f u n c b o d y 
 
 
 
 f u n c b o d y   : :   =   ' ( '   [ P A R L I S T ]   ` )   ' b l o q u e   f i n a l 
 
 
 
 P A R L I S T   : :   =   l i s t a   d e   n o m b r e s   [ ` ' , `   . . . ' ]   |   ` . . .   ' 
 
 
 
 t a b l e c o n s t r u c t o r   : :   =   ' { '   [ l i s t a d e c a m p o s ]   ' } ' 
 
 
 
 l i s t a d e c a m p o s   : :   c a m p o   =   { }   f i e l d s e p   c a m p o   [ f i e l d s e p ] 
 
 
 
 c a m p o   : :   =   ' [ '   e x p   ` ]   ' '   =   ' e x p   |   N o m b r e '   =   ' e x p   |   e x p 
 
 
 
 f i e l d s e p   : :   =   ' , '   |   ' ; ' 
 
 
 
 b i n o p   : :   =   ' + '   |   ' - '   |   ' * '   |   ' / '   |   ' ^ '   |   ' % '   |   ` . .   ' | 
 
 ` < ' | `   < = '   |   ' > '   |   ` >   =   ' | '   = =   ' | `   ~   = '   | 
 
 y   |   o 
 
 
 
 U N O P   : :   =   ' - '   |   n o   |   ' # ' 
 
 
 
 
 
 
 
 
 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 